色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java生產者和消費者模擬

錢衛國1年前6瀏覽0評論

Java中生產者和消費者模式是常用的線程同步技術之一,常用于解決多線程間的協調和通信問題。下面我將以一個簡單的例子來介紹該模式。

public class ProducerConsumer{
private static ListdataList = new ArrayList<>();
private static final int MAX_SIZE = 10;
public static void main(String[] args){
new Producer().start();
new Consumer().start();
}
static class Producer extends Thread{
@Override
public void run(){
while (true){
synchronized (dataList){
if (dataList.size() >= MAX_SIZE){
try {
dataList.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("生產者生產一個數據");
int data = new Random().nextInt();
dataList.add(data);
dataList.notifyAll();
}
}
}
}
static class Consumer extends Thread{
@Override
public void run(){
while (true){
synchronized (dataList){
if (dataList.size()<= 0){
try {
dataList.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
int data = dataList.remove(0);
System.out.println("消費者消費一個數據:" + data);
dataList.notifyAll();
}
}
}
}
}

以上代碼定義了兩個線程,Producer負責生產數據,Consumer負責消費數據,數據以List集合保存,在生產者生產數據時,如果List集合已滿,則生產者線程調用wait方法等待,直到消費者消費數據造成List不滿時,生產者才開始生產數據并喚醒消費者線程。在消費者消費數據時,如果List集合為空,則消費者線程調用wait方法等待,直到生產者生產數據造成List不為空時,消費者才開始消費數據并喚醒生產者線程。