论坛首页 入门技术论坛

《java并发编程实践》

浏览 3886 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (15)
作者 正文
   发表时间:2008-08-11  


在javaeye上看到有人推荐这本《java并发编程实践》,正好又听我们公司的一个同事说起,说这本的确不错。

作为一名java开发人员,尤其是j2ee开发,并发的处理是大头。

附书评:

Sun社区线程指导区推荐读物之一(当然是推荐的英文版)。书写的循序渐进,实例丰富。这次博文的中文版翻译质量较好,还没有全部看完,但已经开始对几个做java的朋友推荐了 :) 

Java currency framework是java 5新加入的,但感觉了解的人不多,多数人还是自己写线程池,队列。这个框架其实已经融入到Java里面,学会使用这个框架能让多线程程序的编写事半功倍。另外对其他语言的多线程编程也会有所启发。现在国内能买到的详细解释这个框架的书不多,这本书算是现阶段的精品了。
  • 大小: 14.2 KB
   发表时间:2008-09-01  
请教楼主一个问题,你有看第3.1节中的例子吗?
Listing 3.1. Sharing Variables without Synchronization. Don't Do this.

public class NoVisibility {
    private static boolean ready;
    private static int number;

    private static class ReaderThread extends Thread {
        public void run() {
            while (!ready)
                Thread.yield();
            System.out.println(number);
        }
    }

    public static void main(String[] args) {
        new ReaderThread().start();
        number = 42;
        ready = true;
    }
}









这个例子是不是有错啊?我试验过,一定会出42,而不是像书中描述的那样出0或者死循环。
请问 这是作者的错误呢,还是这个例子需要其他条件?

谢谢。
0 请登录后投票
   发表时间:2008-09-04  
@tjcaomin
就这段代码来看,我也觉得必然打印出42……
0 请登录后投票
   发表时间:2008-12-09  
按照书上的意思
42,0或者死循环都有可能。
编译器产生的代码也可能被CPU再次做乱序和并行(out-of-order / parallelism)优化。
0 请登录后投票
   发表时间:2008-12-09  
我也在看这本书
刚好看这节呢,Volatile想了好几天了
出现0的可能性
我感觉是微乎其微

明白了volatile,应该就明白了这种可能性
http://www.ibm.com/developerworks/cn/java/j-jtp06197.html
那本书的作者写的
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics