java线程题目
来源:互联网 发布:qq魅力值软件 编辑:程序博客网 时间:2024/06/11 22:53
通过线程按照顺序循环输出ABC n次
根据题目的意思应该是每个线程输出一个字符,按照顺序输出n次。
对于这个题目应该是3个线程。
分析:线程的执行方式是乱序的,需要通过协作才能实现3个线程顺序输出字符。
在jdk1.5中线程的协作是通过Lock/Condition及Samephore/CyclicBarriar/CountLatchDown实现的
import java.util.*;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class ABC {private int state = 1;private Lock l = new ReentrantLock();private Condition condition = l.newCondition();public static void main(String[] args) {ABC abc =new ABC();A a = abc.new A();B b = abc.new B();C c = abc.new C();ExecutorService executorService=Executors.newFixedThreadPool(3);//释放线程池for(int i=0;i<10;i++){executorService.execute(a);executorService.execute(b);executorService.execute(c);}executorService.shutdown();}class A implements Runnable {public void run() {l.lock();try {while (true) {if (state % 3 == 1) {System.out.println("A");state++;condition.signalAll();break;} else {try {condition.await();} catch (InterruptedException e) {e.printStackTrace();}}}} finally {l.unlock();}}}class B implements Runnable {public void run(){l.lock();try{while(true){if(state%3==2){System.out.println("B");state++;condition.signalAll();break;}else{try{condition.await();}catch (InterruptedException e) {e.printStackTrace();}}}}finally{l.unlock();}}}class C implements Runnable{public void run(){l.lock();try{while(true){if(state%3==0){System.out.println("C");state++;condition.signalAll();break;}else{try{condition.await();}catch (InterruptedException e) {e.printStackTrace();}}}}finally{l.unlock();}}}}
0 0
- java线程题目
- 线程笔记一:java线程经典题目:轮流打印
- Java小题目之两个线程顺序打印A、B
- 线程面试题目
- 线程的面试题目
- 线程同步题目
- 线程面试题目
- 几个线程题目
- Java题目面试题目.
- java题目
- java题目
- JAVA题目
- java 题目
- java题目
- Java题目
- java题目
- java题目
- java题目
- 字符串相关题目
- 论证是一门学问 如何让你的观点有说服力-9 规则9 事件发生的概率或许至关重要
- android4.0触摸屏滑鼠模式解决方法-添加idc文件
- 面向对象(二)——装箱、equals、单例类、接口、模式
- Android 数据访问之External Storage 数据保存在sd卡 demo+笔记
- java线程题目
- jquery struts2 文件下载
- Linux X86保护模式分段验证
- HBase框架
- 最新Visual Studio Tools For Unity 安装使用解析
- Spring设值注入
- hbase-zookeeper
- 字符集:ASCII ANSI UNICODE UTF GB2312 ...
- google play v3支付功能,加中文注解