淘先锋技术网

首页 1 2 3 4 5 6 7

Java生产者和消费者是非常常见的开发模式,可以用于解决多线程数据交互的问题。下面我们来看一下Java生产者和消费者的一个例子。

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是一个生产者类,用于向BlockingQueue中生产数据。Consumer则是一个消费者,用于从BlockingQueue中消费数据。JavaProducerConsumer类则创建了共享队列并实例化生产者和消费者,并启动它们。

Java生产者和消费者是一种非常有效的多线程数据交换方式,可以确保线程安全,同时提高程序的效率。