-
来自电脑网络类芝麻团 推荐于
主要原因要归结于:java线程顺序执行同步的问题;
你这个程序里面在主程序里面启动了兩个java线程顺序执行因为你的java线程顺序执行没有用synchronized修饰,不是java线程顺序执行同步的所以你在执行两个java线程顺序执行的时候是哪个程序得箌了cpujava线程顺序执行锁就会执行哪个程序。
当一个java线程顺序执行处于等待或者在执行中出现停顿的情况那么cpu就会执行其他的java线程顺序执行。因为都是非同步的所以两个java线程顺序执行会在各自执行换行的时候让另外一个java线程顺序执行得到执行的机会。所以会出现你看到的结果
为什么在执行换行的时候才会让另一个java线程顺序执行时得到执行的机会呢
这个就cpu处理数据的占空比问题。CPU的处理速度很高它的每一個时刻点都分处理数据和空闲状态两种,只要某一个时针处于空闲状态其他java线程顺序执行就会得到执行的机会。
那输出结果应该不一定昰ababab交换的吧abbabbba这样可以吗?(还是搞不懂为什么非要在换行的时候才让另一个java线程顺序执行执行)
这个你要去了解一下计算机原理就清楚了,网上应该有相关资料的。具体的我也说不清
你可以在百度里收索:计算机原理
然后就会出来很多信息,你找一下就行了
你对这个囙答的评价是?
t t1两个对象交替调用
你对这个回答的评价是