JUC之LockSupport与Condition

JUC之LockSupport与Condition

一、LockSupport

  • park()

    • 阻塞当前线程
    • 调用unpark、或者中断该线程,唤醒
  • unpark()

    • 唤醒线程

    这个工具主要用于对线程进行一个阻塞、唤醒处理。

二、Condition

​ Condition是一套等待/通知方法的接口,其 实现是在AQS的ConditionObject中,主要的实现方式是采用:

  • 同步队列
  • 等待队列

1、等待队列处理

​ 如果调用锁的condition对象的await方法,那么该线程就会构造成节点进入等待队列。进入等待队列之后,唤醒该线程需要其它线程调用相同的contion上的signal方法,尝试唤醒,并且进入同步队列。

2、同步队列处理

​ 经过唤醒之后的线程就会进入同步队列,在同步队列中,执行获取锁的操作,与一般情况下线程获取同步状态的实现是一致的。

三、Usage

Condition c1=lock.newCondition();
Condition c2=lock.newCondition();
  • 一个锁可以有多个condition,这意味着一个锁可以有多个队列,包括同步、等待队列;这是Synchronized所不能够拥有的一个特性,他的wait、signal都是操作同一个队列。
发布了57 篇原创文章 · 获赞 32 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/rekingman/article/details/98887033