锁定老帖子 主题:新写了一个Java并发程序设计教程
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-07-30
能不能提供一些实际的例子啊? 教程真的很赞!希望楼主多发这样的教程。
|
|
返回顶楼 | |
发表时间:2010-07-30
下来看看,感谢楼主.
|
|
返回顶楼 | |
发表时间:2010-07-30
学习了,膜拜中
|
|
返回顶楼 | |
发表时间:2010-07-30
工作了1年多,使用线程的才几次,看到楼主的无私,真是很感谢,Mark。
|
|
返回顶楼 | |
发表时间:2010-07-30
很不错.谢谢分享. 正想学习多线程。。
|
|
返回顶楼 | |
发表时间: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阻塞完善的版本好像也有这样问题。 |
|
返回顶楼 | |
发表时间: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的语意,我选择前置判断的例子。 |
|
返回顶楼 | |
发表时间:2010-07-30
温绍 终于出来了
|
|
返回顶楼 | |
发表时间: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的语意,我选择前置判断的例子。 啊,抱歉,是我记错了。但是后置的做法好像不利于程序的理解,可能个人的感觉不一样吧 |
|
返回顶楼 | |
发表时间:2010-07-30
有女性读者对教程中我关于三大定律的解读方式表示了愤慨...
|
|
返回顶楼 | |