为什么打印的结果每次不同?为什么执行的顺序不同?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

为什么打印的结果每次不同?为什么执行的顺序不同?

蛮大人123 2016-06-12 17:54:25 1185

求大神指教为什么每次打印的结果会不同?
原码:

public class TreadTest {
public static void main(String[] args) {
Thread t1 = new Thread(new Hello());
Thread t2 = new Thread(new Hello());
Thread t3 = new Thread(new Hello());
t1.start();
t2.start();
t3.start();
}
}
class Hello implements Runnable {
int i;
public void run() {
while (true) {
System.out.println("Hello " + i++);
// System.out.println("Hello "+(++i));
if (i == 5) {
break;
}
}
}
分享到
取消 提交回答
全部回答(1)
  • 蛮大人123
    2019-07-17 19:34:49

    首先说 线程优先级,并不能保证优先级高的先运行,也不保证优先级高的更多的分配CPU时间,只是对系统的建议而已,到底运行哪个,是操作系统决定的,都不是java说了算的。
    另外java只能保证在线程内部看起来是顺序执行你的代码的,并不能保证从其他线程看来这个是按照你编码顺序执行的。
    根据java语言规范,程序的正确性和性能保障,不能依靠优先级。
    要靠程序自己控制。
    优先级这个东西一般在系统资源紧缺的情况下可能会比较明显。
    你这个经过运行时优化之后,几乎没有什么了。
    所以体现不出来。

    0 0
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章