A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiaolij3s 黑马帝   /  2011-11-29 15:13  /  2118 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 xiaolij3s 于 2011-11-29 15:55 编辑

线程的安全用到 同步   然后1.5之后锁代替了 同步  什么情况下用锁 什么情况下用同步

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

6 个回复

倒序浏览
清秋 黑马帝 2011-11-29 15:29:57
沙发
锁是能唤醒指定的线程。如果想交替执行的话。只能用锁吧
回复 使用道具 举报
清秋 发表于 2011-11-29 15:29
锁是能唤醒指定的线程。如果想交替执行的话。只能用锁吧

notify()  和 notifyAll() 不是也能唤醒线程嘛
回复 使用道具 举报
清秋 黑马帝 2011-11-29 15:54:00
板凳
xiaolij3s 发表于 2011-11-29 15:31
notify()  和 notifyAll() 不是也能唤醒线程嘛

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

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

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

评分

参与人数 1技术分 +2 收起 理由
admin + 2 赞一个!

查看全部评分

回复 使用道具 举报
清秋 发表于 2011-11-29 15:54
notify()随机唤醒一个线程。notifyAll()唤醒的全部的线程
如果用notifyAll()在生产者消费者的例子里。很 ...

大概了解了  谢谢哈
回复 使用道具 举报
用锁的话。一个锁就行了,以下只需要使用condition来对线程进行控制上。比如只需要建一个锁对象:Lock lock = new Lock();然后各个线程中用Conditon来进行控制。但是synchronized同步的话,每一个锁都需要一个对象,不利于管理。而且,唤醒机制在synchronized中,只能唤醒一个或者全部唤醒,但是Lock可以唤醒指定线程。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
xiaolij3s 黑马帝 2011-11-29 16:17:02
7#
肖岑锋 发表于 2011-11-29 16:14
用锁的话。一个锁就行了,以下只需要使用condition来对线程进行控制上。比如只需要建一个锁对象:Lock lock ...

:handshake
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马