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

同步计数器Semaphore

2016-05-04 00:00 531 查看
Semaphore作为同步计数器,作用主要是控制线程可执行的数量。

下面是一个实例,比如一台服务器,只允许三个客户端同时访问,现在来了10个客户端:

package com.lin.test;

import java.util.concurrent.Semaphore;

public class SemaphoreTest {

public static void main(String[] args) {

final Semaphore semaphore = new Semaphore(3);

for(int i=0;i<10;i++){
final int no = i;
Runnable thread = new Runnable() {
@Override
public void run() {
try {
System.out.println("客户端"+no+"连上了。。。");
semaphore.acquire();//获取接下来执行的许可
Thread.sleep(3000);//模拟服务器处理请求的时间
System.out.println("客户端"+no+"访问结束。。。");
} catch (Exception e) {

}
finally{
semaphore.release();//释放允许下一个线程访问
}
}
};
new Thread(thread).start();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 多线程