一直认为无锁比有锁快,性能更高,可是以下这个线程等待测试结果,却跟自己想得不一样:
public class CallResult { private volatile boolean noFinish = true;
public boolean isNoFinish() { return commandIsFinish; }
public void setNoFinish(boolean noFinish) { this.noFinish= noFinish; }
}
CallResult callResult = new CallResult(); // .... 把callResult放到队列,让队列另一端的线程去处理
/* 1. 无锁等待方式,等待队列另一端的线程把isNoFinish设值为false */ while(callResult.isNoFinish) { Thread.yield(); }
/* 2. 锁等待方式, 等待队列另一端的线程notify(). 测试结果这种方式性能更高*/ synchronized (callResult) { try { callResult.wait(); } catch (InterruptedException e) { e.printStackTrace(); } }
|
针对以上测试结果,想看看各位道友的看法
[该贴被abaddoncoder于2015-04-19 14:12修改过]