Semaphore 可以被多个线程获得许可同时访问某一资源
public class SemaphoreDemo implements Runnable {
Semaphore semp=new Semaphore(5);//可以同时被5个线程获得访问许可
@Override
public void run() {
try {
semp.acquire();
Thread.sleep(2000);
System.out.println(new Date()+":"+Thread.currentThread().getName());
semp.release();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
SemaphoreDemo r = new SemaphoreDemo();
for (int i = 0; i < 20; i++) {
new Thread(r).start();
}
}
}