开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推
来源:互联网 发布:运动仿真软件哪个好 编辑:程序博客网 时间:2024/04/18 13:28
这三个线程分别为A,B,C,我们可以把这三个线程当成父,子,孙三个线程,每个线程要循环输出十次。然后要有一个类去完成他们的任务就是输出当前线程的名字,然后我们可以用condition实现三个线程的交替输出。
/** * 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C, * 每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示; * 如:ABCABC….依次递推 * * PrintABC * 创建人:LBM * 时间:2016年11月25日-上午9:34:53 * @version 1.0.0 * */public class PrintABC {public static void main(String[] args) {PrintClass printClass = new PrintClass();new Thread(new Runnable() {@Overridepublic void run() {//线程Afor( int i=1;i<=10;i++){printClass.PrintNameA(i);}}},"A").start();new Thread(new Runnable() {//线程B@Overridepublic void run() {for( int i=1;i<=10;i++){printClass.PrintNameB(i);}}},"B").start();new Thread(new Runnable() {//线程C@Overridepublic void run() {for( int i=1;i<=10;i++){printClass.PrintNameC(i);}}},"C").start();}static class PrintClass{private String flag = "A";Lock lock = new ReentrantLock();Condition conditionA = lock.newCondition();//控制A线程运行Condition conditionB = lock.newCondition();//控制B线程运行Condition conditionC = lock.newCondition();//控制C线程运行public void PrintNameA(int i){//线程A的任务lock.lock();while (!"A".equals(flag)) {try {conditionA.await();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}try{System.out.println("A线程第"+i+"次输出---"+Thread.currentThread().getName());flag ="B";conditionB.signal();}finally {lock.unlock();}}public void PrintNameB(int i){//线程B的任务lock.lock();while (!"B".equals(flag)) {try {conditionB.await();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}try{System.out.println("B线程第"+i+"次输出---"+Thread.currentThread().getName());flag ="C";conditionC.signal();}finally {lock.unlock();}}public void PrintNameC(int i){//线程C的任务lock.lock();while (!"C".equals(flag)) {try {conditionC.await();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}try{System.out.println("C线程第"+i+"次输出---"+Thread.currentThread().getName());flag ="A";conditionA.signal();}finally {lock.unlock();}}}}打印结果如下:
A线程第1次输出---A
B线程第1次输出---B
C线程第1次输出---C
A线程第2次输出---A
B线程第2次输出---B
C线程第2次输出---C
A线程第3次输出---A
B线程第3次输出---B
C线程第3次输出---C
A线程第4次输出---A
B线程第4次输出---B
C线程第4次输出---C
A线程第5次输出---A
B线程第5次输出---B
C线程第5次输出---C
A线程第6次输出---A
B线程第6次输出---B
C线程第6次输出---C
A线程第7次输出---A
B线程第7次输出---B
C线程第7次输出---C
A线程第8次输出---A
B线程第8次输出---B
C线程第8次输出---C
A线程第9次输出---A
B线程第9次输出---B
C线程第9次输出---C
A线程第10次输出---A
B线程第10次输出---B
C线程第10次输出---C
1 0
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- 开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推
- 开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- 润和面试题:开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- 笔试题:编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC
- java导入excel到数据库
- linux下查看nginx,apache,mysql,php的编译参数
- 网络中我关注的那些前辈们的档案(2016.12.28 Updating...)
- MySQL和Oracle的delete,truncate
- 在GridView或者ListView的Adapter中使用Glide加载图片,图片被拉伸问题
- 开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推
- dfs的剪枝问题
- 算法#23--整数反转
- SpringMVC 提交参数的方式和注解详述
- Logstash实践: 分布式系统的日志监控
- 安卓shadow综合控件和布局
- 使用eclipse连接mysql database explorer连接不上的解决办法以及配置
- Android 中使用IDE为Android Studio时候,后台类型从double 改成 int,但是客户端还是显示double问题(JAVA修改Model类型,但是无效)
- C++ 头文件格式和函数注释格式