之前看了个帖子
http://topic.csdn.net/u/20100601/13/baf5eb8a-3694-4d58-9e1b-b2b20f00b8cb.html
if(x>4){
  System.out.println("test1");
}else if(x>9){
  System.out.println("test2");
}else{
  System.out.pringln("test3");
}
问x=?时,输出test2当时想无论如何也不可能输出test2
今天再想想,在多线程环境下,还是有可能的。
比如判断x>4时,x=2,判断完之后,在else if之前,x值变成了10。
不过由于if判断的操作太简单,速度很快,发生输出test2的概率还是很小很小。

解决方案 »

  1.   

    有可能 有可能 x>4 线程休眠  x>8线程激活状态  顿悟了  于是我又回来了
      

  2.   

    不管是多线程,还是单线程的情况下都不会输出 test2
      

  3.   

    多线程也不会的,你里面是一个判断分支,也就是说任何线程只能走三条语句其中的一条,就算你判断test1后被其他线程占用改变了X再回来,你还是要继续执行test1的
      

  4.   

    是嘛,怎么可能存在test2呢。。