多线程经典问题顺序打印
开启3个线程,这3个线程的ID分别为A、B、C,
* 每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;
* 如:ABCABC….依次递推。
序输出ABC用synchronized的代码实现
/** * create by spy on 2018/5/31 */ public class ThreadShunXuPrint { public static void main(String[] args) { Object obj = new Object(); for (int i = 0; i < 3; i++) { new Thread(new printThread(obj, "" + (char) (i + 65), i, 121)).start(); } } static class printThread implements Runnable { private static Object object; //线程加锁对象 private String threadName; //线程名称要打印的字母 private int threadId; //线程指定的下标ID private static int count = 0; //已打印次数 private Integer totalCount = 0; //总打印次数public printThread(Object object, String threadName, int threadId, Integer totalCount) { this.object = object; this.threadName = threadName; this.threadId = threadId; this.totalCount = totalCount; }@Override public void run() { synchronized (object) {//判断该资源是否正在被使用 while (count < totalCount) { if (count % 3 == threadId) { //判断当前已打印次取余线程数相等打印否则等待 System.out.println(threadName); count++; object.notifyAll(); } else { try { object.wait(); } catch (Exception e) { System.out.println("线程" + threadName + "打断了!"); e.printStackTrace(); } } }} } }}
【多线程经典问题顺序打印】转载于:https://www.cnblogs.com/songpingyi/p/9118096.html
推荐阅读
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 爱就是希望你好好活着
- 昨夜小楼听风
- 知识
- 死结。
- 我从来不做坏事
- 烦恼和幸福
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- Linux下面如何查看tomcat已经使用多少线程
- 说得清,说不清