求大神指教为什么每次打印的结果会不同?
原码:
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;
}
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
首先说 线程优先级,并不能保证优先级高的先运行,也不保证优先级高的更多的分配CPU时间,只是对系统的建议而已,到底运行哪个,是操作系统决定的,都不是java说了算的。
另外java只能保证在线程内部看起来是顺序执行你的代码的,并不能保证从其他线程看来这个是按照你编码顺序执行的。
根据java语言规范,程序的正确性和性能保障,不能依靠优先级。
要靠程序自己控制。
优先级这个东西一般在系统资源紧缺的情况下可能会比较明显。
你这个经过运行时优化之后,几乎没有什么了。
所以体现不出来。