91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

Java父子線程如何進行通信

小樊
88
2024-09-07 12:03:51
欄目: 編程語言

在Java中,父子線程之間的通信可以通過共享變量、wait()、notify()和notifyAll()方法來實現。這里有一個簡單的例子來說明如何在父子線程之間進行通信:

class SharedData {
    private int data;
    private boolean dataAvailable = false;

    public synchronized void setData(int data) {
        this.data = data;
        dataAvailable = true;
        notify(); // 喚醒等待的線程
    }

    public synchronized int getData() throws InterruptedException {
        while (!dataAvailable) {
            wait(); // 等待數據變為可用
        }
        dataAvailable = false;
        return data;
    }
}

class ProducerThread extends Thread {
    private SharedData sharedData;

    public ProducerThread(SharedData sharedData) {
        this.sharedData = sharedData;
    }

    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.println("Producing data: " + i);
            sharedData.setData(i);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

class ConsumerThread extends Thread {
    private SharedData sharedData;

    public ConsumerThread(SharedData sharedData) {
        this.sharedData = sharedData;
    }

    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            try {
                int data = sharedData.getData();
                System.out.println("Consuming data: " + data);
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

public class Main {
    public static void main(String[] args) {
        SharedData sharedData = new SharedData();
        ProducerThread producer = new ProducerThread(sharedData);
        ConsumerThread consumer = new ConsumerThread(sharedData);

        producer.start();
        consumer.start();
    }
}

在這個例子中,我們創建了一個名為SharedData的類,它包含一個整數變量data和一個布爾變量dataAvailablesetData()方法用于設置數據,并將dataAvailable設置為truegetData()方法用于獲取數據,當數據不可用時,它會等待。

ProducerThreadConsumerThread分別是生產者和消費者線程,它們共享一個SharedData對象。生產者線程使用setData()方法生成數據,消費者線程使用getData()方法消費數據。通過這種方式,父子線程可以進行通信。

0
临西县| 龙海市| 弥勒县| 怀仁县| 永嘉县| 鹤峰县| 建始县| 宁武县| 武威市| 安顺市| 昆山市| 仪陇县| 磴口县| 恩施市| 什邡市| 玉龙| 通化市| 镇坪县| 鸡西市| 三台县| 图木舒克市| 喀喇沁旗| 濉溪县| 南雄市| 涟源市| 嵩明县| 宁晋县| 霍城县| 格尔木市| 盐山县| 三门县| 博野县| 博湖县| 普兰县| 望城县| 金门县| 大名县| 马尔康县| 内丘县| 佛冈县| 阿图什市|