java.lang.Thread 源码阅读笔记
Thread 类实现了 Runnable 接口
sleep, yield, join, wait 方法的比较
sleep() 静态方法,只对当前线程有效
1 | /** |
yield() 静态方法,只对当前线程有效
1 | /** |
join()
1 | /** |
wait() 属于 Object,需要其他线程调用 notify()/notifyAll() 唤醒
1 | /** |
总结
wait() 属于 Object 对象,线程必须先持有对象锁,然后调用wait() 方法,释放锁,进入该对象的等待队列,直到另外一个持有该对象锁的线程调用 notify() / notifyAll() 唤醒。
sleep(): 是 Thread 类的静态方法,只对当前线程有效,线程调用 sleep() 方法,会让当前线程休眠,不释放锁,直到休眠时间过,当前线程进入就绪状态
yield() 是 Thread 类的静态方法,只对当前线程有效,线程调用 yield() 方法,让出 CPU 的使用权,让正在运行的线程进入就绪状态
join(): 调用join的线程优先执行,当前正在执行的线程阻塞,直到调用 join() 方法的线程执行完毕或者被打断,比如 A 线程正在运行,线程 B 调用 join() 方法,A 需要等待 B 执行完再执行
- 本文作者: Kelly Liu
- 本文链接: http://tiantianliu2018.github.io/2020/03/20/Java-Thread-源码阅读笔记/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!