论坛首页 Java企业应用论坛

新写了一个Java并发程序设计教程

浏览 30076 次
该帖已经被评为良好帖
作者 正文
   发表时间:2010-07-30  
能不能提供一些实际的例子啊? 教程真的很赞!希望楼主多发这样的教程。
0 请登录后投票
   发表时间:2010-07-30  
下来看看,感谢楼主.
0 请登录后投票
   发表时间:2010-07-30  
学习了,膜拜中
0 请登录后投票
   发表时间:2010-07-30  
工作了1年多,使用线程的才几次,看到楼主的无私,真是很感谢,Mark。
0 请登录后投票
   发表时间:2010-07-30  
很不错.谢谢分享. 正想学习多线程。。
0 请登录后投票
   发表时间:2010-07-30   最后修改:2010-07-30
LZ, 教程第12页阻塞队列的实现代码似乎有点问题:
public void offer(Object object) {
    synchronized(notEmpty) {
        if(linkedList.size() == 0) {
            notEmpty.notifyAll();
        }
        linkedList.add(object);
    }
}

linkedList.add(object);

这句应该在notifyAll之前执行,后两页加上offer阻塞完善的版本好像也有这样问题。
0 请登录后投票
   发表时间:2010-07-30  
seraphim871211 写道
LZ, 教程第12页阻塞队列的实现代码似乎有点问题:
public void offer(Object object) {
    synchronized(notEmpty) {
        if(linkedList.size() == 0) {
            notEmpty.notifyAll();
        }
        linkedList.add(object);
    }
}

linkedList.add(object);

这句应该在notifyAll之前执行,后两页加上offer阻塞完善的版本好像也有这样问题。

如果改在后面,会变成这样:
public void offer(Object object) {
    synchronized(notEmpty) {
        linkedList.add(object);
        if(linkedList.size() == 1) {
            notEmpty.notifyAll();
        }
    }
}

这样,==1做notEmpty.notifyAll,结果是一样,因为synchronized结束之后wait的线程才能拿到锁。

后置==1判断的做法和前置==0判断的做法效果一样,各有各自的优点,为了更方便表达notEmpty的语意,我选择前置判断的例子。
0 请登录后投票
   发表时间:2010-07-30  
温绍  终于出来了
0 请登录后投票
   发表时间:2010-07-30   最后修改:2010-07-30
wenshao 写道
seraphim871211 写道
LZ, 教程第12页阻塞队列的实现代码似乎有点问题:
public void offer(Object object) {
    synchronized(notEmpty) {
        if(linkedList.size() == 0) {
            notEmpty.notifyAll();
        }
        linkedList.add(object);
    }
}

linkedList.add(object);

这句应该在notifyAll之前执行,后两页加上offer阻塞完善的版本好像也有这样问题。

如果改在后面,会变成这样:
public void offer(Object object) {
    synchronized(notEmpty) {
        linkedList.add(object);
        if(linkedList.size() == 1) {
            notEmpty.notifyAll();
        }
    }
}

这样,==1做notEmpty.notifyAll,结果是一样,因为synchronized结束之后wait的线程才能拿到锁。

后置==1判断的做法和前置==0判断的做法效果一样,各有各自的优点,为了更方便表达notEmpty的语意,我选择前置判断的例子。


啊,抱歉,是我记错了。但是后置的做法好像不利于程序的理解,可能个人的感觉不一样吧
0 请登录后投票
   发表时间:2010-07-30  
有女性读者对教程中我关于三大定律的解读方式表示了愤慨...
0 请登录后投票
论坛首页 Java企业应用版

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