译者:

易晓斓的其他译作

原文:

Java Puzzlers

- Java谜题选 - III

原作者 Josh Bloch 的其他文章:

本周热评

其它收藏服务:

金牌译作 Java谜题选 - III

2188个读者 易晓斓 @ yeeyan.com 2007年09月14日 双语对照  原文 字体大小

题目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)程序进入锁死状态

请大家想想,踊跃发表意见。答案和分析之后发布。请不要上机运行后,再来说答案,谢谢。

本文版权所有,未经许可,请勿转载
内容合作请 联系我们

译作评分
0.0
请给出您的评分  提交

更多关于 Java Puzzlers 并发 的翻译文章

4条评论

  • 1.

    阿里吧 童生  | 2007年10月08日

    请问你的 “Java谜题选”系列什么时候能出完?

     
  • 2.

    易晓斓 状元  | 2007年10月09日

    已经不耐烦了吗? :-)

     
  • 3.

    阿里吧 童生  | 2007年10月30日

    是啊,呵呵

    也许会自己找原文看了。

     
  • 4.

    TigerF 童生  | 2008年03月06日

    是b呀。因为无法预知++先执行还是assert先执行,还有number没有正确的修饰,可能导致两个线程中看到的变量不一致。

     

添加评论

阅读
发现
翻译
合作媒体

Copyright © 2009 yeeyan.com All rights reserved. 京ICP证080457号