站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题请教,为什么线程非安全的还是正确的结果

请教,为什么线程非安全的还是正确的结果

摘要: 请教,为什么线程非安全的还是正确的结果


class ThreadTest1 implements Runnable {

int i = 0;

public void run() {

++i;
System.out.println(i);

}
}

class www {
public static void main(String[] args) {
ThreadTest1 t = new ThreadTest1();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
}
}



也算是种巧合吧,我觉得。
其原因可能在于
第一,那两行代码根本用不完一个CPU的时间片就可以执行完毕,所以出现问题的情况太难碰到了。
第二,那两行代码的执行时间远远小于系统创建并启动一个新线程的时间,所以下一个线程被创建好之前,人家可能早就结束了大半天了,导致想看看出问题的情况就更难了。


int i = 0;改成Integer就可以看到效果了


↑返回目录
前一篇: 汉字问题
后一篇: 请教一个JAVA多线程的代码,我不太明白,感谢。。