本文共 865 字,大约阅读时间需要 2 分钟。
它们是 LockSupport 类中的方法
// 暂停当前线程LockSupport.park();// 恢复某个线程的运行LockSupport.unpark(暂停线程对象)
先 park 再 unpark
与 Object 的 wait & notify 相比
每个线程都有自己的一个Parker对象,由三部分组成_counter,_cond和_mutex打个比喻
1)调用Unsage.unpark(Thread_0)方法,设置_counter为1
2)唤醒_cond条件变量中的Thread_0
3)Thread_0恢复运行
4)设置_counter为0
1)调用Unsafe.unpark(Thread_0)方法,设置_counter为1
2)当前线程调用Unsafe.park()方法
3)检查_counter,本情况为1,这时线程无需阻塞,需要运行
4)设置_counter为0
转载地址:http://cxlq.baihongyu.com/