以下の擬似コードにはpoll()
、メインスレッドで永久に呼び出される関数があります。sleep()
のステートメントなしでこれを行うとpoll()
、他のスレッドによって1分間に2〜3個のアイテムのみがキューに追加されます。これは、ポーリングがput()
ステートメントをブロックすることを意味しますか?
どうすればこの問題を解決できますか?
public class Test extends Thread{
private LinkedBlockingQueue<Object> queue = null;
Test(){
queue = new LinkedBlockingQueue<Object>(10);
}
public void run(){
// Do stuff, get incoming object from network
queue.put(o);
}
public Object poll(){
Object o = queue.poll();
sleep(1000);
return o;
}
}