黑马程序员技术交流社区

标题: 两个线程的优先级相同的情况下,执行的情况【已解决】 [打印本页]

作者: 郑传庆    时间: 2012-6-8 11:32
标题: 两个线程的优先级相同的情况下,执行的情况【已解决】
本帖最后由 郑传庆 于 2012-6-8 16:16 编辑

两个线程的优先级相同的情况下,它们的优先级是怎么算的。多线程引入了一个异步行为(异步线程??),该异步行为能解决这个情况吗?
作者: 李春阳    时间: 2012-6-8 11:50
- - 这个,优先级的话,创建的时候默认为5,所以不作优先级修改的话,俩线程的优先级都是相同的。

优先级怎么算的?额,这个问题我可以理解为:CPU如何处理俩相同优先级线程吗?
因为我们电脑现在很多还是单核,所以理论上的多线程同时运行~
实际上还是有先后的,你运行一会我运行一会~用毕老师的话就是俩线程抢CPU。

因而我们在练习的时候,要是FOR循环设少了,经常是一个线程直接执行完,另一个再执行~
且每次执行结果都不一样~但理论上还是比较平均的分配CPU的。


异步的话~它是多线程的目的~
概念嘛,明显是相对于同步而言的。
距离栗子~
同步:
就是你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。   
异步:
就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。   

所以我觉得应该说,多线程的目的是异步,以解决程序执行的效率问题,即不用为了等待一个进程而影响其他进程操作。
作者: 舒赫莱宁    时间: 2012-6-8 12:59
优先级是怎么计算的。。。这个不是那么重要吧
在理论情况下,优先级高的线程会优先执行,如果优先级相同的话,cpu会在空余时随机选择执行
但实际上,现在计算机cpu处理数据的能力已经很高了
所以优先级不一定就决定线程的执行顺序了,多个线程可以在cpu的多个内核中同时执行了

多线程异步问题是为了防止多个线程同时操作同一对象,造成数据的混乱而产生的一种机制,
但是这样就失去了多线程出现的意义了,因为这相当于把多线程原有的效率优势又取消掉了

因此在类的设计时要尽量平衡两者的利弊!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2