黑马程序员技术交流社区

标题: 线程问题,当是复习吧!知道的不吝赐教 [打印本页]

作者: xiaolij3s    时间: 2011-11-29 15:13
标题: 线程问题,当是复习吧!知道的不吝赐教
本帖最后由 xiaolij3s 于 2011-11-29 15:55 编辑

线程的安全用到 同步   然后1.5之后锁代替了 同步  什么情况下用锁 什么情况下用同步
作者: 清秋    时间: 2011-11-29 15:29
锁是能唤醒指定的线程。如果想交替执行的话。只能用锁吧
作者: xiaolij3s    时间: 2011-11-29 15:31
清秋 发表于 2011-11-29 15:29
锁是能唤醒指定的线程。如果想交替执行的话。只能用锁吧

notify()  和 notifyAll() 不是也能唤醒线程嘛
作者: 清秋    时间: 2011-11-29 15:54
xiaolij3s 发表于 2011-11-29 15:31
notify()  和 notifyAll() 不是也能唤醒线程嘛

notify()随机唤醒一个线程。notifyAll()唤醒的全部的线程
如果用notifyAll()在生产者消费者的例子里。很多线程都是notify()然后又wait()去了
如果用lock就唤醒指定的线程。就把对方的唤醒。

用锁的话。。比较简化代码之类的

好像刚才的回答,问题比较大。呵呵。或者再听听其他人的意见

作者: xiaolij3s    时间: 2011-11-29 15:55
清秋 发表于 2011-11-29 15:54
notify()随机唤醒一个线程。notifyAll()唤醒的全部的线程
如果用notifyAll()在生产者消费者的例子里。很 ...

大概了解了  谢谢哈
作者: 肖岑锋    时间: 2011-11-29 16:14
用锁的话。一个锁就行了,以下只需要使用condition来对线程进行控制上。比如只需要建一个锁对象:Lock lock = new Lock();然后各个线程中用Conditon来进行控制。但是synchronized同步的话,每一个锁都需要一个对象,不利于管理。而且,唤醒机制在synchronized中,只能唤醒一个或者全部唤醒,但是Lock可以唤醒指定线程。
作者: xiaolij3s    时间: 2011-11-29 16:17
肖岑锋 发表于 2011-11-29 16:14
用锁的话。一个锁就行了,以下只需要使用condition来对线程进行控制上。比如只需要建一个锁对象:Lock lock ...

:handshake




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2