背景,多个生产者一个消费者,实现生产者生产数据按产生顺序加上编号
简单应用如下,子线程进行原子增
public class Producer implements Runnable {
private static AtomicInteger count= new AtomicInteger();
public void run() {
String data = null;
count.incrementAndGet()
data = "data:" + count.incrementAndGet();
System.out.println("将数据:" + data + "放入队列...");
}
}
执行:
// 声明一个容量为10的缓存队列
BlockingQueue<String> queue = new LinkedBlockingQueue<String>(10);
Producer producer1 = new Producer(queue);
Producer producer2 = new Producer(queue);
Producer producer3 = new Producer(queue);
Consumer consumer = new Consumer(queue);
// 借助Executors
ExecutorService service = Executors.newCachedThreadPool();
// 启动线程
service.execute(producer1);
service.execute(producer2);
service.execute(producer3);
service.execute(consumer);
运行结果如下:
在多线程的场景即可实现原子加
打开incrementAndGet调用链,调用方法如下:
public class Atom