我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:六合特码 > 多处理器 >

如何让java更好的利用多cpu?

归档日期:07-08       文本归类:多处理器      文章编辑:爱尚语录

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  1【专注:Python+人工智能Java大数据HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】几个意见大致如下,第一,不能,因为“进程是CPU进行调度的单位,而JVM是一个进程,于是就只能跑在一个CPU上”。第二,“进程是CPU进行调度的单位,这没错,但是OS负责将一个进程在不同的CPU上调度到另外一个CPU上,而这个进程,则是由不同的线程构成的,那么说,线程还是在不同的CPU上运行了”。我更倾向于第二种解释,于是核心问题就变成了讨论“JVM能不能够将线程安排到不同的CPU上去运行呢?”。

  最终,在SUN公司授权的《Java核心技术》,第7版卷II,第8版卷I,有关于“可运行线程”中,找到如下两句话:

  “今天,人们很可能有单台拥有多个CPU的计算机,但是,并发执行的进程数并不是CPU数目制约的。操作系统的时间片分配给每一个进程,给人并行处理的感觉”。

  展开全部几个意见大致如下,第一,不能,因为“进程是CPU进行调度的单位,而JVM是一个进程,于是就只能跑在一个CPU上”。第二,“进程是CPU进行调度的单位,这没错,但是OS负责将一个进程在不同的CPU上调度到另外一个CPU上,而这个进程,则是由不同的线程构成的,那么说,线程还是在不同的CPU上运行了”。我更倾向于第二种解释,于是核心问题就变成了讨论“JVM能不能够将线程安排到不同的CPU上去运行呢?”。

  最终,在SUN公司授权的《Java核心技术》,第7版卷II,第8版卷I,有关于“可运行线程”中,找到如下两句话:

  “今天,人们很可能有单台拥有多个CPU的计算机,但是,并发执行的进程数并不是CPU数目制约的。操作系统的时间片分配给每一个进程,给人并行处理的感觉”。

  好吧,上面的这句话,并不能说明这个答案,但是当我看到下面的这句原话的时候,感觉答案就在这里了:

  在具有多个处理器的机器上,每一个处理器运行一个线程,可以有多个线程并行运行。当然,如果线程的数目多于处理器的数目,调度器依然采用时间片机制。这句话足以用来反驳那个出问题的人了,因为他的答案本身就是错的。

  更详细的信息可以参见有关Java虚拟机实现的“并发”系列讲解,基本上每本关于Java虚拟机有关的书籍以及官方文档都会讲到JVM如何实现线程的几种方式。 基于系统内核,基于用户线程等等实现。JVM中的线程实现是本地化的~ 本地化的意思就是与平台有关了,尽管与平台有关,但是线程调度,仍旧是最佳高效的方式,有资料曾说过:线程的创建销毁与调度的开销是进程的三十分之一。

本文链接:http://ticketsareus.net/duochuliqi/831.html