Thread.join()&Thread.yeild();Object.wait()&Object.notify()&Object.notifyAll()

Thread.join()

多线程启动,默认都是并行运行的,如果需要一个线程结束运行后再运行其他的, Thread.join()/Thread.join(1000ms),可以解决!

Thread t1 = ...
Thread t2 = ...
t1.start();
t1.join();//等待t1运行结束
t2.start();//如果没有t1.join();则两个线程是同时启动运行的;

Thread.yeild()

运行线程愿意让出运行权,供其他线程(也包括本线程)竞争处理器执行权。

Object.wait()

  1. 持有对象锁的线程可以invoke,本线程释放对象锁(后续并不会去主动竞争锁,即便锁已经被释放)停止执行后续代码,正常情况下直到其他线程调用同一个锁的notify()或notifyAll()后并且重新获取到锁后才会继续往下执行。
  2. wait(1000ms),另外加上了一个继续执行条件(过了指定时间后会主动竞争锁)。

Object.notify()

持有对象锁的线程可以invoke,随机通知一个等待该锁的线程去竞争锁(即使没有立即竞争到锁,等到锁被释放了,最终还是可以获得锁继续执行下去),其他等待锁的线程不会去竞争锁,除非被通知到才会有改变。

Object.notifyAll()

持有对象锁的线程可以invoke,通知所有等待该锁的线程去竞争锁。

转载于:https://my.oschina.net/cashi/blog/795583

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值