题目3:看谁跑得快的数字...
译者序:其实这个程序和单元测试无关,更多的是并发的问题。但需要了解assertEquals方法的使用。
程序
public class Test extends junit.framework.TestCase{int number;
public void test() throws InterruptedException{
number = 0;
Thread t = new Thread(new Runnable() {
public void run() {
assertEquals(2, number);
}
});
number = 1;
t.start();
number++;
t.join();
}
}
答案
(a) assertEquals永远错(b) assertEquals有时对
(c) assertEquals永远对
(d)程序进入锁死状态
请大家想想,踊跃发表意见。答案和分析之后发布。请不要上机运行后,再来说答案,谢谢。
本文版权所有,未经许可,请勿转载
内容合作请 联系我们









Java谜题选 - III







阿里吧 童生 | 2007年10月08日
请问你的 “Java谜题选”系列什么时候能出完?
易晓斓 状元 | 2007年10月09日
已经不耐烦了吗? :-)
阿里吧 童生 | 2007年10月30日
是啊,呵呵
也许会自己找原文看了。
TigerF 童生 | 2008年03月06日
是b呀。因为无法预知++先执行还是assert先执行,还有number没有正确的修饰,可能导致两个线程中看到的变量不一致。