Semaphore:
可以理解为 synchronized 的加强版,作用是控制线程的并发数量。就这一点而言,单纯的synchronized 关键字是实现不了的。
semaphore.acquire(2) 表示每次线程进入将会占用2个通路,semaphore.release(2) 运行时表示归还2个通路。没有通路,则线程就无法进入代码块。代表信号量的释放与使用。必须由获取它的线程释放
示例1.通过建立线程池20个线程池,使用semaphore来进行5个线程同时并发。
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;
/**
* Create on 2020年1月22日上午11:57:47 @author 脚踏实地,2020涅槃重生
* @version 1.0
*
* @Description:
*/
public class SemaphoreDemo {
public static void main(String[] args) {
// 使用可缓存的线程池