私は次のコードを持っています:
Queue<Message> localMsgQueue;
//inside the constructor
localMsgQueue = new ConcurrentLinkedQueue<Message>();
public void AddMsg(Message m)
{
localMsgQueue.offer(m);
System.out.println("^^"+localMsgQueue.size());
}
public void GetMsg() {
System.out.println("+++" + localMsgQueue.size());
}
ここで、AddMsgは、キューを初期化するメインスレッド内で呼び出されます。GetMsgは、時々別のスレッドから呼び出されます。
私の問題は、AddMsg内のサイズチェックがキュー内の正しい数の要素を返すのに対し、GetMsgは常にゼロサイズを返しますが、キューには要素が含まれています。
誰かがここで何が問題なのか指摘できますか?Java並行キューを使用するのはこれが初めてなので、何が起こっているのかわかりません。