黑马程序员 日记三:线程同步工具总结

---------------------- android培训java培训、期待与您交流! ----------------------

一、Semaphore信号灯

查阅API文档,Semaphore继承自Object类,实现了Serializable接口。

Semaphore的特点是:能够控制同时访问资源的线程的个数,并且形成并非访问资源。

Semaphore的主要操作:该类有两个构造方法,Semaphore(int permits) 和Semaphore(int permits, boolean fair) ,前者参数permits表示可同时访问资源的最大线程数,后者多了一个布尔型参数fair,当值为true时,保证多个线程能够实现先进先出,其他的主要方法是acquire()release()方法,分别用来为线程分配权限和释放权限。

二、CyclicBarrier

CyclicBarrier继承自Object类。

构造方法有两种,CyclicBarrier(int parties) 和CyclicBarrier(int parties, Runnable barrierAction) ,其中的参数parties表示所需等待的线程数,barrierAction表示,当线程完成等待后,需要进行的操作。

CyclicBarrier主要操作有await(),当执行该方法时候,每个线程执行到await()语句时,会等待,直到所等待的线程数量与构造函数中的parties参数相等时候,会继续向下执行。

三、CountDownLatch

CyclicBarrier继承自Object类。

该类只有一种构造方法,CountDownLatch(int count) ,其中参数count表示倒计时的次数。

主要的操作有await()CountDown(),前者表示线程在等待,而由后者倒数,当倒数了count次后,等待的线程开始继续向下执行。

四、Exchanger

继承自Object类。

该类构造方法只有一种,Exchanger() 。

主要操作有exchange(V x) 和exchange(V x, long timeout, TimeUnit unit) ,前者是除非线程被打断,否则等待另外一个线程进入交换点交换数据;后则,则加上了时间的限制,若超出时间限制,便不再等待。


---------------------- android培训java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值