指定时间为0,9OAL 就直接执行wait(0)

原文:指定时间为0,9OAL 就直接执行wait(0)

团子论坛9OAL 指定时间为0:就是执行:while(isAlive()){wait(0)}
意思是说:指定时间为0,9OAL 就直接执行wait(0)。上面说wait()是让当前线程等待呀,如果wait(0),就等着别的线程notify呀。上面的代码中,是不可能有别的线程notify的呀。那也就是说Thread-A是永远不能被唤醒的呀,不能被唤醒,就不能再获得对象锁呀,当然Thread-A就不能继续往下走呀。分析的结果是这样的,实际的结果却是那样的,为什么呢??????

在重新看源码:
上面说了:对谁使用了synchronized,就用谁的wait()。
也就是说,源码中是对aThread对象使用了synchronized,也就是说让当前线程等待,等待继续获取到aThread对象的监听。也就是说:不是让aThread等待,而是让当前线程等aThread。等aThread死了,就是等aThread执行完毕而死或者被打断而死。

那上面的代码的意思就是,让main线程等待,等到aThread执行完毕,然后开始执行main。
所以上面的代码的执行过程应该是:
main执行过程中,
1、创建aThread对象
2、启动aThread,aThread开始执行。
3、main执行join(),让自己等待,等aThread执行完毕
4、aThread执行完毕,main继续执行
5、创建B线程并开始执行

在看join()的说明:

Waits at most millis milliseconds for this thread to die. A timeout of 0 means to wait forever.

等待指定时间,等待this.join()中的this代表的线程去死。如果时间为0,就一直等到this代表的线程死亡。如果时间不为0,就等待指定时间就行了,如果this线程没有死也不等了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值