多线程打印程序 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();
                }
            }
        }
    }
}
复制代码

。。。

posted @   guoyu1  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示