黑马程序员技术交流社区

标题: 多线程——notify、run [打印本页]

作者: 赵许星    时间: 2013-10-29 12:37
标题: 多线程——notify、run
本帖最后由 赵许星 于 2013-10-30 12:21 编辑

notify()只能唤醒线程池中的一个线程资源?但如何确定唤醒哪一个呢? 有没有定向唤醒?
多线程run()方法中没有使用死循环,该线程只执行一次?执行完后就死掉了!
作者: 那得好好想想    时间: 2013-10-29 12:48
是的,只能唤醒其中一个线程,选择是任意的,并在对实现做出决定时发生,也就是说你不能控制。
如果没有循环的话run()执行完就关闭了。
作者: 赵许星    时间: 2013-10-29 18:35
不是吧,你帮我看一下,毕老师java教学视频中关于多线程的内容——生产与销售,里面就没有使用 死循环来控制线程的生命周期
作者: ヅ飞飞    时间: 2013-10-29 19:12
本帖最后由 ヅ飞飞 于 2013-10-29 19:13 编辑

notify()唤醒的是线程池总最早被阻塞的线程,notifyAll唤醒所有阻塞线程。因为notify唤醒想成具有局限性(锁较多时,不能控制该唤醒的线程,有可能造成死锁),所以开发常使用notifyAll方法。
线程结束的唯一标志:run方法结束。
为提高安全性java没有提供杀死线程的方法,所以java程序员要通过控制run()方法来实现控制线程的结束。
作者: 胡志翔    时间: 2013-10-29 20:38
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程(一般是最先开始等待的线程),而且不是按优先级。

run()方法没有循环参与的话,执行完后就终止了。有循环的话,只要符合循环条件,就会一直重复执行下去,直到不符合循环条件为止。
作者: To    时间: 2013-10-30 00:11
楼主你好,如果问题已解决请将帖子状态修改为提问结束,
如果未解决请继续追问,谢谢合作
修改方法请看解释帖:http://bbs.itheima.com/thread-89313-1-1.html




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