并发和并行的问题

Finn 2018-08-05 08:42:00
大佬们你们出手的机会来了。
1.我们通常说的并发是指在单核cpu上利用时间分片的形式"同时"运行多个不同的任务,但是我们现在的cpu都是多核的,假如说有一个4核cpu,我们在主函数中创建了2个线程同时执行一个方法,那么这2个线程是否会在不同核的cpu上同时运行?如果是,这还叫并发吗,还是应该叫并行,那么Thread.currentThread()这个方法总不会输出两个线程名吧。
2.线程优先级问题。在博客上看到有人总结说线程的优先级仍然无法保障线程的执行次序。只不过,优先级高的线程获取CPU资源的概率较大,优先级低的并非没机会执行。但是又有人反驳,这是因为多核cpu的关系,不同线程跑在不同的cpu,所以才得出这个结论,如果跑在单核上高优先级的线程就会先得到调度。好像也有道理。
...全文
184 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Finn 2018-08-06
  • 打赏
  • 举报
回复
引用 2 楼 qq_35175535 的回复:
1.在哪个cpu内核上运行是由操作系统决定的,有可能你两个线程在一个cpu内核上,也可能在不同的上,后面没看明白,Thread.currentThread()就是输出当前执行这句代码的线程,谁执行的我,我输出谁。
2.假如是单核的,高优先级的线程和低优先级线程都准备就绪,一定是高优先级的线程执行。也就是你提到的第二种说法。我有实验证明这种说法。

谢谢老哥,第一个问题currentThread是我自己理解错了。
wildyy 2018-08-05
  • 打赏
  • 举报
回复
1.在哪个cpu内核上运行是由操作系统决定的,有可能你两个线程在一个cpu内核上,也可能在不同的上,后面没看明白,Thread.currentThread()就是输出当前执行这句代码的线程,谁执行的我,我输出谁。
2.假如是单核的,高优先级的线程和低优先级线程都准备就绪,一定是高优先级的线程执行。也就是你提到的第二种说法。我有实验证明这种说法。
oyljerry 2018-08-05
  • 打赏
  • 举报
回复
不同CPU core上是并行。并发是一个core在多个线程调度

50,635

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧