规律: 多线程协作中,一般被考虑使用的,无非就是: (同步工具类) Semaphore ( semaphore.acquire() ;消耗许可数,许可数为负数时,当前线程将被阻塞 semaphore.release() ;增加许可数 ) CountDownLatch ( countDown.countDown() 初始值减1,当前线程总是不会被阻塞 countDown.await() 若值不为0则会被阻塞,等待初始值减为0才会恢复 ) CyclicBarrier ( cyclicBarrier.await() 初始值减1,并阻塞等待初始值减为0。最后一个线程将它减为0之后,若有指定任务,则还需要负责执行指定任务完毕,之后会唤醒之前被阻塞的所有线程,并重置为初始值。 有两个构造方法,其中一个构造方法可以指定每次最后一个线程,需要执行的额外任务。 cyclicBarrier.reset() 用于提前唤醒被阻塞的线程,并重置为初始值 ) (原子变量类) AtomicInteger 一般用于无锁进行自增计数情形 (锁) volatile + ( ReentrantLock + Condition ) / s ynchronized 通过 condition.await()/condition.signal() 或者 object.wait()/object.notify() 的 挂起