线程常用的几种方法的区别

2020-05-18  本文已影响0人  DH大黄
方法 所属对象 是否会释放锁 作用
sleep Thread 不会释放锁 让线程进入睡眠(线程睡眠期间CPU不会再分配时间片给当前线程)
yeild Thread 会释放锁 告诉CPU当前线程执行的差不多了,让出CPU时间片,回到可执行的状态(可能又回马上执行)
wait notify/notifyAll Object 会释放锁 必须放在同步代码块中执行<br />进入线程等待池等待被唤醒(可能会马上就会被唤醒)

1.为什么wait,notify/notifyAll被定义在对象内,而sleep被定义在线程内

因为wait,notify/notifyAll都是锁级别的操作,Java每一个对象都可以进行上锁。Java线程中没有可以供任何对象使用的锁和同步器,所以他们被定义在了对象内

2.调用Thread.wait会怎么样

此处Thread也是一个对象,线程执行退出时会自动执行notify,这样对我们的程序设计会有影响

上一篇 下一篇

猜你喜欢

热点阅读