社区
Java
帖子详情
JAVA的多个线程可以同时在CPU的多个核心上运行么?
hugh Lee
2017-03-16 09:07:44
现在的电脑cpu 都是多核,CPU对于各个线程的调度是随机的(分时调度),如果程序中 开启了多个线程,那么这几个线程是分别同时运行在不同的核心上呢,还是由于 JVM对线程的调度,使得 这几个线程 分时 跑在一个核心上呢?
(另外,在一个核心上 是否 能有两个 线程 同时运行呢?(不采用分时调度))
搜了半天 但是都是有些模棱两可 ,只好特来请教,谢谢!
...全文
177
回复
打赏
收藏
JAVA的多个线程可以同时在CPU的多个核心上运行么?
现在的电脑cpu 都是多核,CPU对于各个线程的调度是随机的(分时调度),如果程序中 开启了多个线程,那么这几个线程是分别同时运行在不同的核心上呢,还是由于 JVM对线程的调度,使得 这几个线程 分时 跑在一个核心上呢? (另外,在一个核心上 是否 能有两个 线程 同时运行呢?(不采用分时调度)) 搜了半天 但是都是有些模棱两可 ,只好特来请教,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
JAVA
的
线程
可以在
多个
CPU
上
运行
么?
关于这个问题,有以下两种答案: 第一,不能,因为“进程是
CPU
进行调度的单位,而JVM是一个进程,于是就只能跑在一个
CPU
上”。 第二,“进程是
CPU
进行调度的单位,这没错,但是OS负责将一个进程在不同的
CPU
上调度到另外一个
CPU
上,而这个进程,则是由不同的
线程
构成的,那么说,
线程
还是在不同的
CPU
上
运行
了”。 在SUN公司授权的《
Java
核心
技术》中,有这样两句话,给了我们答案:
java
线程
可以在
运行
在
多个
cpu
核上吗?
我是一直都以为这个问题的答案是肯定的,也就是说可以
运行
在多核上。 但是有一天见到这样的一个理论,我就顿时毁三观了。 JVM在操作系统中是作为一个进程的,
java
所有的
线程
都
运行
自这个JVM进程中, 所以说
java
线程
某个时间只可能
运行
在一个核上。 这个说法对我的打击太大了,我不能接受。于是就开始多方求证。网上搜索 和朋友一起讨论, 最终证实了
java
线程
是可以
运行
在多核上的,为什么呢? 下面一句话将惊醒梦中人: 现代os都将
线程
作为最小调度单位,进程作为资源分配的最小单位。 在windows中进程是不活动的
单核
CPU
支持
Java
多
线程
吗?我们来一起看看吧
单核
CPU
支持
Java
多
线程
吗?我们来一起看看吧
同一进程的
多个
线程
可以被
多个
CPU
核心
并行执行吗?
一个进程中的
多个
线程
可以被
多个
处理器并行执行。
java
中的多
线程
和
cpu
的
线程
区别
这个概念困扰了我很久,一直没有太明白,毕竟名字是一样的,今天这里来描述一下我对这两个
线程
的理解。 (1)
线程
是
CPU
级别的,一个
cpu
核心
支持一个
线程
(当然也可以虚拟
核心
) (2)
Java
多
线程
并不是由于
cpu
线程
数为
多个
才称为多
线程
,当
Java
线程
数大于
cpu
线程
数,操作系统使用时间片机制,采用
线程
调度算法,频繁的进行
线程
切换。 (3)
线程
是操作系统最小的调度单位,...
Java
50,526
社区成员
85,605
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章