1. 程式人生 > >Java最簡單的生產者消費者模型

Java最簡單的生產者消費者模型

生產者消費者模型就是兩個執行緒輪流執行一段程式碼。下面用Java實現兩個執行緒輪流進行列印。使用synchronized+wait/nofity實現。

public class Main {
    public static void main(String[] args) {
        TestRunnable runnable = new TestRunnable();
        Thread thread1 = new Thread(runnable);
        Thread thread2 = new Thread(runnable);
        thread1.
setName("producer"); thread2.setName("consumer"); thread1.start(); thread2.start(); } } class TestRunnable implements Runnable { public synchronized void test() throws InterruptedException { for (int i = 0; i < 20; i++) { Thread.sleep(500); this
.notify(); System.out.println(Thread.currentThread().getName() + " running"); this.wait(); } notifyAll();//喚醒所有執行緒 } @Override public void run() { System.out.println(Thread.currentThread().getName() + " start"); try { test
(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + " end"); } }

執行結果

producer start
consumer start
producer running
consumer running
producer running
consumer running
producer running
consumer running
producer running
consumer running
producer running
consumer running
producer running
consumer running
producer running
consumer running
producer running
consumer running
producer running
consumer running
producer running
consumer running
producer running
consumer running
producer running
consumer running
producer running
consumer running
producer running
consumer running
producer running
consumer running
producer running
consumer running
producer running
consumer running
producer running
consumer running
producer running
consumer running
producer running
consumer running
consumer end
producer end

Process finished with exit code 0