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

溫馨提示×

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
东方市| 福贡县| 东乌珠穆沁旗| 永宁县| 肃北| 巧家县| 普兰店市| 旬阳县| 双鸭山市| 宁南县| 和顺县| 舞钢市| 仁寿县| 汉沽区| 洮南市| 淳化县| 辛集市| 大厂| 大理市| 精河县| 呼图壁县| 崇文区| 日土县| 长宁县| 高唐县| 黄浦区| 左贡县| 宁陵县| 三江| 聂荣县| 黔西县| 海城市| 西昌市| 广灵县| 蕲春县| 巴马| 凌源市| 博罗县| 甘洛县| 五峰| 新河县|