【发布时间】:2015-01-19 06:07:06
【问题描述】:
我编写了一个程序,其中一个线程用于将元素插入Deque,另一个用于从同一Deque 中读取元素。为此,我正在这样做,
public class ThreadCommunicationInDeque {
public static void main(String args[])
{
Deque deque=new LinkedList<>();
InsertingThread it=new InsertingThread(deque);
ReadingThread1 rt=new ReadingThread1(deque);
it.start();
rt.start();
}
}
class InsertingThread extends Thread{
Deque deque=new LinkedList<>();
InsertingThread(Deque deque){
this.deque=deque;
}
@Override
public void run(){
for(int i=0;i<50;i++){
try {
deque.add(i);
System.out.println(deque.getLast());
Thread.sleep(100);
} catch (InterruptedException ex) {
Logger.getLogger(InsertingThread.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
class ReadingThread1 extends Thread{
Deque deque=new LinkedList<>();
ReadingThread1(Deque deque){
this.deque=deque;
}
@Override
public void run(){
if(deque.isEmpty()){
System.out.println("No elements in queue");
}else
{
System.out.println(deque.getLast());
try {
Thread.sleep(100);
} catch (InterruptedException ex) {
Logger.getLogger(ReadingThread1.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
我的问题是这里 InsertingThread 工作正常,但 ReadingThread 停止显示 No elements in queue。我没有得到我做错的地方,谁能告诉我如何解决它。告诉我有没有更好的方法来做到这一点?
【问题讨论】:
标签: java multithreading deque