JAVA 多线程轮流打印ABC
来源:互联网 发布:qq mac版本能远程协助 编辑:程序博客网 时间:2024/06/07 23:29
采用Thread+Semaphore实现,思路很简单
import java.io.IOException;import java.util.concurrent.Semaphore;public class PrintABC { public static int MAX_TIME = 10; public static class PrintThread extends Thread { private String printChar; private Semaphore curSemaphore, nextSemaphore; public PrintThread(String printChar, Semaphore curSemaphore, Semaphore nextSemaphore) { this.printChar = printChar; this.curSemaphore = curSemaphore; this.nextSemaphore = nextSemaphore; } public void run() { for (int i = 0; i < MAX_TIME; ++i) { try { curSemaphore.acquire(); /* 请求打印需要的信号量,资源数-1,即down操作 */ System.out.println(printChar); nextSemaphore.release(); /* 释放下一个线程打印需要的信号量,资源数+1,即up操作 */ } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } public static void main(String[] args) throws IOException { Semaphore semaphoreA = new Semaphore(1); /* 只有A信号量的初始资源数为1,保证从A开始打印 */ Semaphore semaphoreB = new Semaphore(0); Semaphore semaphoreC = new Semaphore(0); new PrintThread("A", semaphoreA, semaphoreB).start(); new PrintThread("B", semaphoreB, semaphoreC).start(); new PrintThread("C", semaphoreC, semaphoreA).start(); }}
0 0
- JAVA 多线程轮流打印ABC
- 多线程--同时轮流打印ABC
- 面试题多线程轮流打印ABC初试
- JAVA多线程打印ABC
- java多线程轮流打印数据问题
- 多线程轮流打印
- java多线程顺序打印ABC
- java 多线程顺序打印ABC
- 【面试】--三个线程轮流打印ABC
- Java轮流打印字符
- Java多线程 循环打印ABC 10次
- 多线程顺序打印ABC
- 多线程循环打印ABC
- 多线程打印abc
- JAVA程序设计(18.1)----- 1多线程轮流打印 线程调度 线程池 synchronized wait notify 内部类
- 《JAVA多线程之一》顺序打印ABC--讯雷面试题之一
- 顺序打印ABC------java多线程的一道经典面试题
- Java多线程编程7--实例--顺序打印3次ABC
- 【Java网络】Socket 多线程, 一对多服务
- Java三大框架
- vim 与vi的兼容性问题
- OpenCV中SiftDescriptorExtractor
- 各种字符串Hash函数比较
- JAVA 多线程轮流打印ABC
- OpenCV中SurfDescriptorExtractor
- HTML5定稿了,为什么原生App世界将被颠覆
- pb 的动态游标
- OpenCV中OrbDescriptorExtractor
- 为什么要使用SLF4J而不是Log4J
- OpenCV中CalonderDescriptorExtractor
- cglib动态代理(需导入cglib-nodep-2.1_3.jar)
- 详解jQuery选择器正则表达式