1)使用synchronized关键字,比如在方法上加上synchronized,也就是给临界区加锁。
2)使用JUC(java.util.concurrent)工具类
比如CountDownLatch(减到一定数释放锁,主要方法有await和countDown方法)
还有CyclicBarrier,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活,线程进入屏障通过CyclicBarrier的await()方法。是增加的。
最后是Semaphore,信号量主要用于两个目的,一个是用于多个共享资源的互斥使用,另一个用于并发线程数的控制。简单的说就是抢车位,30个人来抢20个车位。就要进行资源互斥控制。主要方法有acquire()和release()方法。
原文:https://www.cnblogs.com/wl889490/p/12885274.html