java线程类中这两个方法的执行顺序?是执行完print再执行run吗?为什么输出结果是ababa
java线程类中这两个方法的执行顺序?是执行完print再执行run吗?为什么输出结果是ababab……交替输出...
java线程类中这两个方法的执行顺序?是执行完print再执行run吗?为什么输出结果是ababab……交替输出
展开
2个回答
展开全部
主要原因要归结于:线程同步的问题;
你这个程序里面在主程序里面启动了两个线程,因为你的线程没有用synchronized修饰,不是线程同步的,所以你在执行两个线程的时候是哪个程序得到了cpu线程锁就会执行哪个程序。
当一个线程处于等待或者在执行中出现停顿的情况,那么cpu就会执行其他的线程。因为都是非同步的,所以两个线程会在各自执行换行的时候让另外一个线程得到执行的机会。所以会出现你看到的结果。
你这个程序里面在主程序里面启动了两个线程,因为你的线程没有用synchronized修饰,不是线程同步的,所以你在执行两个线程的时候是哪个程序得到了cpu线程锁就会执行哪个程序。
当一个线程处于等待或者在执行中出现停顿的情况,那么cpu就会执行其他的线程。因为都是非同步的,所以两个线程会在各自执行换行的时候让另外一个线程得到执行的机会。所以会出现你看到的结果。
更多追问追答
追问
为什么在执行换行的时候才会让另一个线程时得到执行的机会呢
追答
这个就cpu处理数据的占空比问题。CPU的处理速度很高,它的每一个时刻点都分处理数据和空闲状态两种,只要某一个时针处于空闲状态,其他线程就会得到执行的机会。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询