信号量semaphore 允许多个线程同时访问
读写锁ReadWriteLock 在频繁的读写耗时中,读之间不阻塞
倒计时器CountDownLatch obj = new CountDownLatch(10) 设置预“任务”10次,obj.CountDown();次数减一 obj.await()等待任务完成(也就是次数减到0)
循环栅栏 CyclicBarrier 和倒计时器类似,不过他在完成操作后,还可以进行指定的任务
线程阻塞工具类LockSupport 可以在线程任意位置让线程阻塞 park()方法使程序阻塞,LockSupport类使用了类似信号的机制,为每一个线程准备了一个许可,如果许可可用,park()函数会立即返回,并且消费这个许可(也就是将许可变成不可用),如果许可不可用,就会阻塞,而unpark()则使得一个许可变成可用