黑马程序员技术交流社区
标题:
多条线程如何交替运行
[打印本页]
作者:
张炜
时间:
2011-7-18 00:02
标题:
多条线程如何交替运行
2条线程可以写synchronized然后用wait和notify进行轮换交替运行。那超过2条线程该如何处理。API上写notify是唤醒在此对象监视器上等待的单个线程,也就是随即唤醒的。如果对象监视器上的线程超过2条,如何指定该唤醒的是哪一条呢。
作者:
匿名
时间:
2011-7-18 00:21
标题:
回复 楼主 的帖子
notify应该是通知第一个进入wait的那个线程
作者:
匿名
时间:
2011-7-18 10:49
排序的 相当于一个队列...先进先出
不过像操作系统的线程优先级有各种优先级算法...
作者:
孙朋帅
时间:
2011-7-18 11:08
可以用Lock、Condition来实现。Condition可以建立多个条件
用Lock来实现多个线程的同步,内部可以用condition来实现线程的交替运行,
condition内部有await()方法,可以替换wait方法,用signal方法代替notify方法。
作者:
匿名
时间:
2011-7-19 00:41
1.5版本,Java.util.concurrent.locks包中提供了一个借口Lock,替代了synchronized
Synchronized,使用的是隐式的锁,lock是显式的锁.
这种新方法最大的好处是,在一个lock锁上可以添加多组监视器对象,这样就可以实现本方只唤醒对方的线程,而不会唤醒本方的线程。
Lock lock = new ReentrantLock(); 创建锁
lock.lock() 上锁
Condition proCon = lock.newCondition() 在锁lock上创建监视器proCon
Condition cutCon = lock.newCondition() 在索lock上创建监视器cutCon
proCon.await() 使pro(本方)线程进入等待
cutCon.signal() 唤醒cut(对方)线程
Lock.unlock() 解锁(通常放在finally中)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2