我现在遇到的问题是:用户使用客户端扫码装箱,多个机器同时工作,出现箱号同时被多个机器选中,机器操作完成后会将箱号删除,导致其他选中此箱号的机器所有与箱号有关的操作失败。
解决方法:通过消息队列的技术,将箱号放入队列中,机器扫码时调用方法获取箱号前判断队列是否为空,为空则先添加箱号。
package cn.tedu.test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingDeque;
public class QueueTest2 implements Runnable {
private static Integer a = 1;
// 多线程数量:模拟产线数量
private static final Integer THREAD_COUNT = 10;
private static ArrayList<Integer> list = new ArrayList<Integer>();
/**
* 创建队列,最大容量10,LinkedBlockingDeque是一个由链表结构组成的双向阻塞队列,即可以从队列的两端插入和移除元素。
*/
public static BlockingQueue<String> queue = new LinkedBlockingDeque<String>(20);
public static void main(String[] args) thr