在前面我们讲过的synchronized 和 ReentrantLock 都是一次只允许一个线程访问某个资源,而
Semaphore(信号量)可以用来控制同时访问特定资源的线程数量,多线程同时操作共享资源,仍然存在着线程不安全问题,要想多线程安全,理应结合锁进一步保障。