我有一个线程问题..
我正在使用内部类进行查找..我一直在阅读如何正确执行此操作,并且所有内容都指向使用字段..在我的情况下是“布尔验证”。
基本上如果对象在那里。我将字段声明为 true 并返回值。问题是,在性能测试期间,同一对象中的同一方法同时在多个线程中被调用,并且效果很有趣。(我猜是因为 pause() (等待 10 毫秒))
所以在线程A..那里的对象,所以它声明字段true..waits 10ms..在线程B..对象不存在,但由于等待并且正在访问相同的字段,它无论如何都会返回true。
我在这里遇到了麻烦:(
有谁知道更好的方法来做到这一点?
boolean verify;
public boolean lookupAndVerify(String id) throws InterruptedException
{
final String key = id;
PastryIdFactory localFactory = new rice.pastry.commonapi.PastryIdFactory(env);
final Id lookupKey = localFactory.buildId(key);
Past p = (Past) apps.get(env.getRandomSource().nextInt(apps.size()));
p.lookup(lookupKey, new Continuation<PastContent, Exception>()
{
public void receiveResult(PastContent result)
{
P2PPKIContent content = (P2PPKIContent) result;
if(content !=null){
verify = true;
}
}
public void receiveException(Exception result)
{
System.out.println("Error looking up " + lookupKey);
}
});
pause();
return verify;
}