Semaphore
加锁的几种常用方式
Synchronized
lock实现类
semaphore
基础知识
信号量主要用于
- 多个共享资源的互斥使用
- 并发线程数的控制
使用
public static void main(String[] args) {
Semaphore semaphore = new Semaphore(3);
for(int i=0;i<=6;i++ ){
new Thread(()->{
try {
semaphore.acquire();
System.out.println(Thread.currentThread().getName()+"获得车位");
try {
TimeUnit.SECONDS.sleep(3);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"停车3秒 离开车位");
} catch (Exception e) {
e.printStackTrace();
}finally {
semaphore.release();
}
}).start();
}
}
Thread-0获得车位
Thread-2获得车位
Thread-1获得车位
Thread-2停车3秒 离开车位
Thread-0停车3秒 离开车位
Thread-3获得车位
Thread-1停车3秒 离开车位
Thread-4获得车位
Thread-5获得车位
Thread-4停车3秒 离开车位
Thread-5停车3秒 离开车位
Thread-3停车3秒 离开车位
Thread-6获得车位
Thread-6停车3秒 离开车位