亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
平邑县| 大洼县| 会泽县| 靖安县| 金坛市| 长兴县| 南乐县| 阿勒泰市| 乌兰浩特市| 巴塘县| 蕲春县| 沛县| 高雄市| 文化| 巧家县| 镶黄旗| 西贡区| 黄石市| 保德县| 四川省| 吉安县| 和政县| 延寿县| 咸丰县| 革吉县| 台中市| 临沂市| 修武县| 西昌市| 西充县| 隆子县| 尼玛县| 永宁县| 区。| 壤塘县| 惠水县| 城固县| 临洮县| 北海市| 永安市| 东乡|