java thread cpu

探讨了Java进程中的线程是否可以在多核CPU上并行执行的问题。文章对比了两种观点,并解释了JVM如何通过green thread和native thread实现多线程,最终得出结论:官方JVM采用native thread实现,允许多个线程在多核CPU上并发运行。

问题:一个java进程的多个线程能否在cpu的多core里执行?
观点一:
进程是CPU进行调度的单位,而JVM是进程级别的,于是一个jvm产生的java进程就只能跑在CPU的一个core上。
在我的印象里一直抱着这个想法,很多年。多年之前OS对于cpu执行进程是这么处理的,没有错。


观点二:
从操作系统来看,linux2.6以及windowsNT4.0之后都具备将多个线程放到cpu的多个core里执行的能力。也就意味着一个多线程的原生程序(直接和OS交互),在这种操作系统下是可以被多个core同时执行的,每个core的thread ID不一样。
        但是java 进程是通过jvm产生的,操作系统能识别java进程的线程吗?


回答是根据jvm的实现线程的方式,jvm会有两种实现方式:green thread、native thread 。 green thread 指 VM 自己管 thread, 而 native thread 表示該 VM 用的 thread 等同於 OS thread。其中如果是native theead的方式实现的话,是可以多个core执行同一进程的多个thread的。
多说一句:官方的jvm是native thread的实现方式微笑


个人看法,有不同意见欢迎留言讨论。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值