sleep、join、yield概念
-
sleep:sleep方法可以让线程进入到Waiting状态,并且不占用CPU资源,但是不释放锁,直到规定时间后再执行,休眠期间如果被中断,会抛出异常并清除中断状态。
-
join:因为新的线程加入了我们,所以我们要等待它执行完在出发。用法:main等待thread1执行完毕,使用子线程调join方法thread1.join(),注意谁等谁(主等待子);join源码里还是调用wait方法,因为线程执行完会自动notify,所以不需要调用notify唤醒;在join期间线程处于Waiting状态。
-
yield:释放我获得到的CPU时间片;但是释放了CPU时间片,状态依然是Runnable,因为他释放时间片,并不会释放锁,也不会陷入阻塞,下一次CPU调度,依然可能随时把他给调度起来。JVM不保证yield原则,比如没有其他使用我的CPU资源,我调用yield,JVM也许并不会将我的CPU 释放掉,一般我们开发不使用这个方法。
sleep()和wait()区别
-
sleep对比wait最大的区别就是sleep不释放锁,包括synchronized和lok。而wait会释放锁。
-
sleep()在Thread类里,wait()在Object类里,wait()&#x