中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

java多線程如何交替打印

小億
90
2024-09-05 09:40:00
欄目: 編程語言

在Java中,可以使用synchronized關鍵字和wait()notify()方法實現多線程交替打印。下面是一個簡單的示例:

public class AlternatePrinting {
    private static final Object lock = new Object();
    private static int counter = 1;

    public static void main(String[] args) {
        Thread t1 = new Thread(new PrintTask("Thread-1", 2), "Thread-1");
        Thread t2 = new Thread(new PrintTask("Thread-2", 1), "Thread-2");

        t1.start();
        t2.start();
    }

    static class PrintTask implements Runnable {
        private String threadName;
        private int targetNumber;

        public PrintTask(String threadName, int targetNumber) {
            this.threadName = threadName;
            this.targetNumber = targetNumber;
        }

        @Override
        public void run() {
            while (counter <= 10) {
                synchronized (lock) {
                    if (counter % 2 == targetNumber) {
                        System.out.println(threadName + ": " + counter++);
                        lock.notify();
                    } else {
                        try {
                            lock.wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
    }
}

在這個示例中,我們創建了兩個線程t1t2,分別打印奇數和偶數。我們使用一個全局變量counter來記錄當前需要打印的數字,并使用一個鎖對象lock來確保線程間的同步。

counter為奇數時,線程t1獲得鎖并打印數字,然后調用lock.notify()喚醒等待的線程t2。接著,線程t1調用lock.wait()釋放鎖并進入等待狀態。當counter為偶數時,線程t2獲得鎖并打印數字,然后調用lock.notify()喚醒等待的線程t1。接著,線程t2調用lock.wait()釋放鎖并進入等待狀態。這樣,兩個線程就可以交替打印數字。

0
镇平县| 祁连县| 宁陵县| 西宁市| 隆安县| 萍乡市| 山西省| 美姑县| 武夷山市| 宽甸| 洛阳市| 阿合奇县| 临江市| 惠来县| 呼伦贝尔市| 色达县| 香港| 新竹市| 疏附县| 孝义市| 聊城市| 焦作市| 潮州市| 宜章县| 绵阳市| 阳东县| 台山市| 龙井市| 阳朔县| 于都县| 平山县| 金沙县| 阳谷县| 哈密市| 顺昌县| 屏东市| 平度市| 扎囊县| 西丰县| 天柱县| 罗平县|