欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java生產者和消費者處理表數據

吉茹定1年前6瀏覽0評論

在Java中,生產者和消費者模式非常常見。它是一種解決多線程并發問題的經典方法。在編寫代碼處理表數據時,也可以采用生產者和消費者的方式去處理。

public class ProducerConsumer {
public static void main(String[] args) {
//生產者線程
Producer producer = new Producer();
//消費者線程
Consumer consumer = new Consumer(producer);
//啟動線程
new Thread(producer).start();
new Thread(consumer).start();
}
}
//生產者類
class Producer implements Runnable {
private Table table;
public Producer() {
this.table = new Table();
}
@Override
public void run() {
for (int i = 1; i<= 100; i++) {
table.put(String.valueOf(i));
}
}
}
//消費者類
class Consumer implements Runnable {
private Table table;
public Consumer(Table table) {
this.table = table;
}
@Override
public void run() {
while (true) {
String data = table.get();
System.out.println(data);
if (data.equals("100")) {
System.exit(0);
}
}
}
}
//表類
class Table {
private LinkedListdataList;
public Table() {
this.dataList = new LinkedList();
}
//放入數據
public synchronized void put(String data) {
while (dataList.size() >= 10) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
notify();
dataList.add(data);
}
//獲取數據
public synchronized String get() {
while (dataList.isEmpty()) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
notify();
return dataList.removeFirst();
}
}

在示例代碼中,首先定義了生產者類、消費者類和表類。生產者類用于向表中添加數據,即 put() 方法,消費者類用于從表中取出數據,即 get() 方法。當表中沒有數據時,消費者線程將進入等待狀態。當表中數據數量達到上限時,生產者線程將進入等待狀態。

在 main 方法中,創建了生產者線程和消費者線程,并啟動兩個線程。當所有數據處理完成后,消費者線程可以退出。在本示例中,當取出的數據為 100 時,消費者線程將結束。