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

溫馨提示×

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
大石桥市| 社会| 岳普湖县| 专栏| 安西县| 泰宁县| 洪泽县| 昌黎县| 霍城县| 百色市| 黄浦区| 屯门区| 樟树市| 闵行区| 平顶山市| 松阳县| 五峰| 当涂县| 昭通市| 十堰市| 东乡族自治县| 河北省| 安庆市| 高淳县| 澄城县| 武胜县| 河东区| 旬邑县| 三门峡市| 濉溪县| 镇沅| 信宜市| 于都县| 鄂托克旗| 大城县| 修文县| 德化县| 刚察县| 即墨市| 体育| 华安县|