多线程经典问题顺序打印

开启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

    推荐阅读