java blockingqueue 多线程操作顺序执行问题
在多线程环境下 多个线程操作同一个blockingqueue 能不能做到按顺序从队列里取出元素呢?
目前下面这样处理使用多个线程获取队列中的数显示出的顺序是乱的
如果这样无法实现多个线程按顺序操作队列的话那这个是不是就不能作为异步数据库操作的队列了?
因为很可能需要连续处理的两个数据库操作执行顺序是颠倒的
第一次接多线程和队列,希望各位来指点指点
class WriteThread implements Runnable {
static BlockingQueue<Integer> numQueue;
static {
int queuesize = 100;
numQueue = new LinkedBlockingQueue<Integer>(queuesize);
for (int i = 0; i < queuesize; i++) {
numQueue.offer(i);
}
}
public WriteThread() {
}
@Override
public void run() {
try {
while (true) {
Integer num;
num = numQueue.take();
if (null == num)
break;
System.out.println(num);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
快要坏掉的番茄
10 years ago