public class ABCPrint {
public static void main(String[] args){
Semaphore sa = new Semaphore(1);
Semaphore sb = new Semaphore(0);
Semaphore sc = new Semaphore(0);
int count = 10;
ExecutorService service = Executors.newFixedThreadPool(3);
service.execute(new PrintTask("A", sa, sb, count));
service.execute(new PrintTask("B", sb, sc, count));
service.execute(new PrintTask("C\n", sc, sa, count));
service.shutdown();
}
static class PrintTask implements Runnable{
private String str;
private Semaphore curr;
private Semaphore next;
private int count;
public PrintTask(String str, Semaphore curr, Semaphore next, int count){
this.str = str;
this.curr = curr;
this.next = next;
this.count = count;
}
@Override
public void run() {
while(true){
if(count > 0){
try {
curr.acquire();
System.out.print(str);
next.release();
} catch (InterruptedException e) {
e.printStackTrace();
}
count --;
}else{
break;
}
}
}
}
}
分享到:
相关推荐
Semaphore的使用及其方法的使用。
使用信号量(Semaphore)实现线程的同步
semaphore完整搭建方案,包括帮助文档、程序源码、可执行程序。按照帮助文档完整搭建可视化ansible部署解决方案
关于Android变成中的信号量semaphore,在使用过程中我们往往搞不清楚其信号量的申请和使用。这里主要针对信号量初始值为零的情况做介绍,其他情况不做讨论。初始值为零的情况较少使用,部分代码中的这个情况往往让...
Semaphore产品行业解决方案pdf,Semaphore产品行业解决方案
Semaphore 源码解析 通过使用Semaphore可以在高并发场景进行限流控制处理
Linux下多线程编程-Pthread与Semaphore的使用.doc
semaphore开发源码,ansible可视化部署服务程序,支持界面操作。
Semaphore T-BOX System OverviewPDF,Semaphore T-BOX System Overview
mutex和semaphore互斥程序实例
C#语言Semaphore类用法实例,多线程 用于有多个同类型共享资源(比如端口)时,如何协调端口分配给线程访问资源的问题,是一个简单模拟实例(源代码)。
a: 创建一个线程 b: 创建多个线程 c: 多线程访问同一资源 d: 经典线程同步互斥问题 e: 使用关键段解决子线程互斥问题 f: 利用事件实现线程同步问题 ...I: 信号量 semaphore 解决线程同步问题
Semaphore是计数信号量。Semaphore管理一系列许可证。每个acquire方法阻塞,直到有一个许可证可以获得然后拿走一个许可证;每个release方法增加一个许可证,这可能会释放一个阻塞的acquire方法。然而,其实并没有...
在 node.js 中使用 API 的小型客户端库 ##用法 在你的项目中安装 npm > npm install semaphore-sms 用法示例: var semaphore = require ( 'semaphore-sms' ) ; semaphore . set_api_key ( "..." ) ; ...
semaphore控制多线程循序执行,网上 找的例子更改的希望对大家有用
Semaphore_TBOX_产品-软件及系统功能
主要介绍了C#使用semaphore来管理异步下载请求的方法,涉及C#使用semaphore实现多线程管理的技巧,需要的朋友可以参考下
多线程(C++)同步Semaphore
Semaphore的初步使用 Semaphore是什么,能做什么? Semaphore 是 synchronized 的加强版,作用是控制线程的并发数量。就这一点而言,单纯的synchronized 关键字是实现不了的。 直接看例子吧,这个例子包含3个类,一...
使用 Docker 和 Kubenetes 的 CICD(Semaphore)