线程池 信号量
来源:互联网 发布:霸王的大陆java版本 编辑:程序博客网 时间:2024/05/18 01:29
public class SemaPhore {
public static void main(String[] args) {
// 线程池
ExecutorService exec = Executors.newCachedThreadPool();
// 只能5个线程同时访问
final Semaphore semp = new Semaphore(5);
// 模拟20个客户端访问
for (int index = 0; index < 50; index++) {
final int NO = index;
Runnable run = new Runnable() {
public void run() {
try {
// 获取许可
semp.acquire();
System.out.println("Accessing: " + NO);
Thread.sleep((long) (Math.random() * 6000));
// 访问完后,释放
semp.release();
//availablePermits()指的是当前信号灯库中有多少个可以被使用
System.out.println("-----------------" + semp.availablePermits());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
exec.execute(run);
}
// 退出线程池
exec.shutdown();
}
}
public static void main(String[] args) {
// 线程池
ExecutorService exec = Executors.newCachedThreadPool();
// 只能5个线程同时访问
final Semaphore semp = new Semaphore(5);
// 模拟20个客户端访问
for (int index = 0; index < 50; index++) {
final int NO = index;
Runnable run = new Runnable() {
public void run() {
try {
// 获取许可
semp.acquire();
System.out.println("Accessing: " + NO);
Thread.sleep((long) (Math.random() * 6000));
// 访问完后,释放
semp.release();
//availablePermits()指的是当前信号灯库中有多少个可以被使用
System.out.println("-----------------" + semp.availablePermits());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
exec.execute(run);
}
// 退出线程池
exec.shutdown();
}
}
阅读全文
0 0
- 线程池和信号量
- epoll+线程池+信号量
- 线程池 信号量
- 线程 信号量
- 线程-信号量
- 线程信号量
- Android 线程池、信号量、Looper、缓存初探
- 基于信号量的统一线程池机制
- Linux信号量线程控制
- 信号量和线程互斥锁
- JAVA 线程 同步 信号量
- 线程与信号量
- JAVA 线程 同步 信号量
- 线程信号量同步
- 线程同步之信号量
- 线程同步-信号量
- 线程同步----信号量(Semaphore)
- 线程:信号量 sem_wait sem_post
- 你是如何转行的?转行容易吗?
- Mac入手使用记录
- 怎么从数组a中减去数组b,得到数组C
- 普宁跨境电商外贸 之 到底要不要寄样品? 怎么寄样品?
- okhttp的依赖
- 线程池 信号量
- leetcode--14. Longest Common Prefix
- 动态链接库之 隐式调用——vs手把手演示
- [RK3399][Android7.1] Ubuntu编译环境OpenJDK 8安装
- Android引入IjkPlayer无法播放mkv格式视频的解决方案
- 常用Linux命令大全
- Unity UI层元素渲染顺序
- 运营商名称显示规则
- lombok插件使用