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

java生產(chǎn)者和消費(fèi)者例子

Java生產(chǎn)者和消費(fèi)者是非常常見(jiàn)的開(kāi)發(fā)模式,可以用于解決多線程數(shù)據(jù)交互的問(wèn)題。下面我們來(lái)看一下Java生產(chǎn)者和消費(fèi)者的一個(gè)例子。

public class Producer implements Runnable{
private final BlockingQueuesharedQueue;
public Producer(BlockingQueuesharedQueue) {
this.sharedQueue = sharedQueue;
}
@Override
public void run() {
for(int i=1; i<=10; i++){
try {
System.out.println("Produced : " + i);
sharedQueue.put(i);
} catch (InterruptedException ex) {
Logger.getLogger(Producer.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
public class Consumer implements Runnable{
private final BlockingQueuesharedQueue;
public Consumer(BlockingQueuesharedQueue) {
this.sharedQueue = sharedQueue;
}
@Override
public void run() {
while(true){
try {
int item = sharedQueue.take();
System.out.println("Consumed : " + item);
} catch (InterruptedException ex) {
Logger.getLogger(Consumer.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
public class JavaProducerConsumer {
public static void main(String[] args){
BlockingQueuesharedQueue = new LinkedBlockingQueue<>();
Producer producer=new Producer(sharedQueue);
Consumer consumer=new Consumer(sharedQueue);
new Thread(producer).start();
new Thread(consumer).start();
}
}

以上代碼中,Producer是一個(gè)生產(chǎn)者類(lèi),用于向BlockingQueue中生產(chǎn)數(shù)據(jù)。Consumer則是一個(gè)消費(fèi)者,用于從BlockingQueue中消費(fèi)數(shù)據(jù)。JavaProducerConsumer類(lèi)則創(chuàng)建了共享隊(duì)列并實(shí)例化生產(chǎn)者和消費(fèi)者,并啟動(dòng)它們。

Java生產(chǎn)者和消費(fèi)者是一種非常有效的多線程數(shù)據(jù)交換方式,可以確保線程安全,同時(shí)提高程序的效率。