闭锁:CountDownLatch
使用场景 闭锁 当条件满足时执行下一步操作
/** * 需要等待多少个线程 设置为多少 */ private static CountDownLatch latch = new CountDownLatch(3);
参考博客:写的挺好的
栅栏:阻塞一组线程直到某个事件发生
和闭锁的设置规则一样 需要等待多少线程就设置为多少
CyclicBarrier cyclicBarrier = new CyclicBarrier(3);
栅栏与闭锁的关键区别在于,所有的线程必须同时到达栅栏位置,才能继续执行。闭锁用于等待事件,而栅栏用于等待其他线程。
信号量:就是在资源不够的时候通过信号量来控制,拿到信号量的线程就可以访问。用来保护一个或者多个共享资源的访问。
同步容器:
简单点说就是老版本的线程安全集合 如:Vector,Hashtable直接用synchronized修饰的
并发容器:如:ConcurrentHashMap 采用多段锁来提供性能
CopyOnWriteArrayList,CopyOnWriteArraySet,ArrayBlockingQueue等等。
简单介绍一下,以后看完源码在来补充。
努力吧,皮卡丘