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

溫馨提示×

java多線程怎么實現生產者消費者模式

小樊
83
2024-09-02 05:24:19
欄目: 編程語言

在Java中,可以使用wait()notify()notifyAll()方法來實現生產者-消費者模式。這些方法是Object類的一部分,用于線程間的通信。下面是一個簡單的生產者-消費者模式示例:

  1. 首先,創建一個共享資源類,例如一個緩沖區(Buffer):
public class Buffer {
    private int data;
    private boolean empty = true;

    public synchronized void put(int data) {
        while (!empty) {
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        this.data = data;
        empty = false;
        notifyAll();
    }

    public synchronized int get() {
        while (empty) {
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        empty = true;
        notifyAll();
        return data;
    }
}
  1. 創建生產者線程類:
public class Producer implements Runnable {
    private Buffer buffer;

    public Producer(Buffer buffer) {
        this.buffer = buffer;
    }

    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println("Produced: " + i);
            buffer.put(i);
        }
    }
}
  1. 創建消費者線程類:
public class Consumer implements Runnable {
    private Buffer buffer;

    public Consumer(Buffer buffer) {
        this.buffer = buffer;
    }

    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            int data = buffer.get();
            System.out.println("Consumed: " + data);
        }
    }
}
  1. 在主程序中創建生產者和消費者線程,并啟動它們:
public class Main {
    public static void main(String[] args) {
        Buffer buffer = new Buffer();
        Thread producerThread = new Thread(new Producer(buffer));
        Thread consumerThread = new Thread(new Consumer(buffer));

        producerThread.start();
        consumerThread.start();
    }
}

運行上述代碼,你將看到生產者和消費者線程交替執行,生產者將數據放入緩沖區,消費者從緩沖區中取出數據。這就是一個簡單的生產者-消費者模式實現。

0
呼图壁县| 安福县| 张家川| 页游| 日喀则市| 嵊州市| 甘孜| 新巴尔虎右旗| 伊宁市| 扶风县| 肇庆市| 铜川市| 河津市| 重庆市| 舟曲县| 托克逊县| 仁寿县| 永善县| 芜湖县| 嘉祥县| 秀山| 察雅县| 嘉鱼县| 富顺县| 双辽市| 上饶市| 微山县| 罗定市| 平舆县| 巴南区| 电白县| 临湘市| 开化县| 郯城县| 海林市| 苗栗市| 海兴县| 宜兰县| 兴仁县| 沾化县| 开阳县|