Java并发

LockSupport工具

提供的方法

void park():阻塞当前线程,如果调用unpark()或者当前线程被中断,才能从park()方法中返回

void park(long nanos):阻塞当前线程最多nanos纳秒

void parkUntil(long deadline):阻塞当前线程知道deadline

void unpark(Thread thread):唤醒处于等待状态的线程thread


Condition接口

任意一个java对象,都有一组监视器方法(定义于Object对象上),如wait(),notify(),notifyAll(),与synchronized关键字配合,可以实现等待/通知模式。

提供的方法

void await():当前线程进入等待状态直到被通知或中断,当前线程进入运行状态且从await()返回的条件是:(1)其它线程调用该condition的signal()或signalAll()方法,而当前线程被选中唤醒;(2)其它线程(调用interrupt())中断该线程;(3)如果当前线程从await()返回,说明其获得了condition对象的锁。

void signal():唤醒一个等待在condition上的线程,该线程从await()返回时必须获得该condition的锁

void signalAll():唤醒所有等待在condition上的线程,能够返回的线程必须获得condition的锁

condition对象如何创建

调用Lock方法的newCondition(),如

Lock lock = new ReentrantLock();
Condition condition = lock.newCondition();
如何通过condition实现有界队列

分别新建2个condition对象。如果队列已满,则阻塞当前插入线程,否则插入元素,且唤醒一个获取线程;如果队列已空,则阻塞当前获取线程,否则获取元素,并唤醒一个插入线程。调用condition的方法时必须获取对象的锁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值