チャット クライアントを作成しようとしています。javaSpace からメッセージを返しています。次に、newMessage = true を設定します。したがって、クライアントは、読む必要がある新しいメッセージがあることを確認できます。
public void notify(RemoteEvent ev)
{
try
{
messageRead = false;
QueueItem qiTemplate = new QueueItem();
newMessage = (QueueItem)space.take(qiTemplate,null,Long.MAX_VALUE);
System.out.println(newMessage.getSender().getName()+ ": " + newMessage.getContent());
}
catch (Exception e)
{
e.printStackTrace();
}
}
次に、クライアントに対して、
while(true)
{
try
{
boolean temp = _manager.messageRead;
//System.out.println(temp);
if(!temp)
{
QueueItem nextJob = _manager.newMessage;
String nextJobNumber = nextJob.getSender().getName();
String nextJobName = nextJob.getContent();
System.out.println(nextJob.getSender().getName()+ ": " + nextJob.getContent());
jobList.append( nextJobNumber + " : " + nextJobName + "\n" );
_manager.messageRead = true;
}
} catch ( Exception e)
{
e.printStackTrace();
}
}
あまりにも false に設定しただけでも、今は常に _messager.messageRead を true に返します。//System.out.println(temp); のコメントを外すと、ブール値は何らかの理由で更新され、その意味も等しくなります。
これまでこのエラーに遭遇したことはなく、非常に奇妙です。誰かが助けてくれることを願っています。