开发者社区> 问答> 正文

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

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

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;
}
}
}

展开
收起
蛮大人123 2016-06-12 17:54:25 1931 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

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

    2019-07-17 19:34:49
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载