题目:三个线程,分别打印A、B、C,要求按ABC的顺序循环打印10次。

package com.slowcity.crud.controller;

public class PrintOneTwoThree {
public static void main(String[] args) {
Print p1 = new Print(0);
Print p2 = new Print(1);
Print p3 = new Print(2); new Thread(p1, "p1").start();
new Thread(p2, "p2").start();
new Thread(p3, "p3").start(); while (Thread.activeCount() > 1);
System.out.println("Done!");
}
} class Print implements Runnable {
private static int state = 0;
private int id;
private static Object lock = new Object(); public Print(int id) {
this.id = id;
} @Override
public void run() {
synchronized (lock) {
while (state < 30) {
if (state % 3 == id) {
switch (id) {
case 0:
System.out.println("["
+ Thread.currentThread().getName() + "]" + "A");
break; case 1:
System.out.println("["
+ Thread.currentThread().getName() + "]" + "B");
break; case 2:
System.out.println("["
+ Thread.currentThread().getName() + "]" + "C");
break; default:
break;
}
state++;
lock.notifyAll();
} else {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}

最新文章

  1. js抛物线动画——加入购物车动效
  2. json转换成对象
  3. Java帮助文档的生成
  4. GDB调试笔记
  5. SPRING IN ACTION 第4版笔记-第九章Securing web applications-003-把用户数据存在数据库
  6. useradd adduser linux创建用户、设置密码、修改用户、删除用户
  7. R-note1
  8. Java面试题之四
  9. UVa202 Repeating Decimals
  10. Mac OS X窗口最小化方法的几个快捷键
  11. Notepad++的正则表达式替换和替换
  12. 王垠:我和Google的故事
  13. 关于redis数据库的简单思考
  14. TeamViewer 密码有关
  15. bootstrapValidator操作
  16. 将Windows系统移到另一个硬盘
  17. 为什么一定要学习linux系统?
  18. CF 1138F 超级有意思的一道交互题QVQ
  19. 【发布iCore3&amp;iCore4ADM资料】
  20. if语句题目练习

热门文章

  1. 使用代码段遍历,枚举类型Enum
  2. 移除jboss响应中的中间件信息
  3. 【转】Java学习---解析Java Servlet工作过程
  4. Win10更新后真正可用VC++6版本
  5. SQLServer 删除表中的重复数据
  6. String真的是不可变的吗?
  7. 分享-结合demo讲解JS引擎工作原理
  8. python第三十六课——1.可迭代对象
  9. 2017-2018-2 20165318 实验四《Android程序设计》实验报告
  10. 2879: [Noi2012]美食节