多线程打印程序 3382019835830
https://blog.csdn.net/nishuiaee/article/details/109016702
。。。
public class Printer { public static class PrinterThread extends Thread { static boolean[] candidate = new boolean[10]; int num; public PrinterThread(int num) { this.num = num; } @Override public void run() { while (true) { synchronized (PrinterThread.candidate) { while (candidate[num] == false) { try { candidate.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println(num); candidate[num] = false; candidate.notifyAll(); } } } } public static class Test { public static void main(String[] args) throws InterruptedException { int[] nums = {3, 3, 8, 2, 0, 1, 9, 8, 3, 5, 8, 3, 0}; for (int i = 0; i < 10; i++) { new PrinterThread(i).start(); } for (int i = 0; i < nums.length; i++) { synchronized (PrinterThread.candidate) { PrinterThread.candidate[nums[i]] = true; PrinterThread.candidate.notifyAll(); PrinterThread.candidate.wait(); } } } } }
。。。