Java最簡單的生產者消費者模型
阿新 • • 發佈:2018-12-19
生產者消費者模型就是兩個執行緒輪流執行一段程式碼。下面用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