当前位置:编程学习 > JAVA >>

求大神帮忙看看这个小程序

这是代码




这是运行结果



主函数运行,运行t1.start之后运行run方法。不是就应该输出“Thread-0.......RUN”了吗?为什么会出现这么情况?求大神能把运行的逻辑说清下,刚刚自学没多久 java程序 --------------------编程问答-------------------- 你多运行几次观察结果,while循环这里的代码是在主线程中的,它优先级要比其它两个高,其他两个线程刚刚运行会稍后一点,因为主线程正在占用CUP资源,此时还没有与及时分配资源给其它两个线程,建立虽然多线程是并行的,但是在抢占CUP资源上会有一个先后的等待队列的,当然这种队列是微观上的,宏观上不影响多线程并行的特性。

综上所述,楼主这种情况就是主线程正处于活跃状态,占用了CUP资源,导致其他两个线程没有及时运行,lz可以试试在主线程的while循环中让线程休眠一下,如Thread.sleep(100);不要直接这样打印,频率太高了。 --------------------编程问答-------------------- 这就是线程的奇妙之处,该程序中存在三个线程,Main、t1、t2,其中Main的优先级别高于其他两个,所以它抢占的资源级别比他两都高,即会出现该结果,楼主多次运行后可能会出现不同的结果,就是因为在人为不控制的情况下,线程运行是没规律的!!
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,