基于白嫖黑马程序员白嫖视频:全面深入学习java并发编程,java基础进阶中级必会教程

1 介绍

  • LockSupport.park():暂停当前线程;
  • LockSupport.unpark():恢复某个线程的运行;

注意:

  • park之后的线程状态是WAITING状态;
  • 可以提前unpark,要是执行到park时,发现提交提前被调用了unpark,就继续执行;
  • 不必和Monitor配合使用;

2 原理

每个线程都会关联一个park对象(类似于每个对象都会关联一个Monitor)。
java多线程(八)LockSupport的park/unpark方法
角色:_counter、_mutex、_cond。

调用park方法(counter = 0):

  • 检查_counter,获得_mutex互斥锁;
  • 线程进入_cond条件变量阻塞,设置_counter=0

调用unpark方法(counter = 1):

  • 设置_counter =1;
  • 唤醒_cond变量的线程;
  • 线程恢复运行;
  • 设置_counter=0

相关文章:

  • 2021-09-01
  • 2021-09-04
  • 2021-06-28
  • 2022-12-23
  • 2022-12-23
  • 2021-05-13
  • 2022-12-23
猜你喜欢
  • 2021-10-12
  • 2021-08-03
  • 2022-12-23
  • 2021-09-04
  • 2022-03-08
  • 2022-12-23
  • 2021-07-06
相关资源
相似解决方案