题目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
翻译:

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