您的位置:首页 > 编程语言 > Java开发

Java中信号量Semaphore的简单使用

2016-08-15 15:30 483 查看
Java中信号量Semaphore的简单使用;

假设有3个人去银行办事,只有2个柜员,3人同时到达后须有一人等待,等待前两人办完之后再进行

import java.util.concurrent.Semaphore;

public class SemaphoreTest {

public static void main(String[] args) {
Semaphore semaphore = new Semaphore(2);

Person pA = new Person(semaphore, "A");
pA.start();
Person pB = new Person(semaphore, "B");
pB.start();
Person pC = new Person(semaphore, "C");
pC.start();
}

}

class Person extends Thread {

private Semaphore semaphore;

public Person(Semaphore semaphore, String name) {
setName(name);
this.semaphore = semaphore;
}

public void run() {
System.out.println(getName() + "正在等待");

try {
semaphore.acquire();
System.out.println(getName() + "正在服务");
sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
semaphore.release();
System.out.println(getName() + "完成服务");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: