JVM系列之(九)Java多线程如何实现在多cpu上分布

12人阅读 评论(0) 收藏 举报
分类:

解答:

  • 1.我们平时常用的JVM实现,Oracle/Sun的HotSpot VM,它是用1:1模型来实现Java线程的,也就是说一个Java线程是直接通过一个OS线程来实现的,中间并没有额外的间接结构。
  • 2.而且HotSpot VM自己也不干涉线程的调度,全权交给底下的OS去处理。所以如果OS想把某个线程调度到某个CPU/核上,它就自己弄了。这个意义上说Java程序跑在HotSpot VM上开多个Java线程,就跟一个C/C++程序开了多线程来跑没有任何两样。
  • 3.那么怎么控制这些线程分布到不同的CPU核上去呢?在Linux上的话,可以用taskset来把线程绑在某个指定的核上。在Java层面上,有大大写了个现成的库来利用taskset绑核:OpenHFT/Java-Thread-Affinity有兴趣的话可以参考一下。
  • 4.结束前提一下:JVM的实现有很多种,并不是所有JVM都像HotSpot VM这样总是用1:1模型的。前面的传送门已经有例子了所以这里就不多说,但还是想特别提一下免得给初学者留下“Java线程就肯定是OS线程”的误解。请务必针对实现来讨论这种问题。
查看评论

JAVA的线程可以在多个CPU上运行么?

这个是我一个技术相当好的哥们去面试的时候碰到的奇葩问题,那天,这个面试官的答案是不能。后来就带着这个问题去国内外的论坛上搜了一把,也是各说纷纭,实在是没有一个统一的答案,简直有点公说公有理,婆说婆有理...
  • ziwen00
  • ziwen00
  • 2014-07-24 23:18:51
  • 8374

java线程可以在运行在多个cpu核上吗?

我是一直都以为这个问题的答案是肯定的,也就是说可以运行在多核上。 但是有一天见到这样的一个理论,我就顿时毁三观了。 JVM在操作系统中是作为一个进程的,java所有的线程都运行自这个JVM进程...
  • maosijunzi
  • maosijunzi
  • 2015-01-08 17:38:17
  • 8414

高压力, 多CPU, 高内存环境下JVM设置

最近对JVM的参数重新看了下, 把应用的JVM参数调整了下。  几个重要的参数 -server -Xmx3g -Xms3g -XX:MaxPermSize=128m -XX:NewRat...
  • lhzjj
  • lhzjj
  • 2015-01-15 22:45:44
  • 1247

Java 从单核到多核的多线程(并发)

JAVA 并发       java的并行编程比较复杂,我也理解不深。但是最近由于要并行训练分类器,琢磨了一点,有错误请指正。只是大体介绍一下而已。       很多问题我们使用顺序编程便可以解决,但...
  • guicaizhou
  • guicaizhou
  • 2016-03-11 17:22:59
  • 3017

Java多线程通过多核CPU来提升速度--更快的执行

全文翻译自15L大神   方案1:单线程 假设有个请求,这个请求服务端的处理需要执行3个很缓慢的IO操作(比如数据库查询或文件查询),那么正常的顺序可能是(括号里面代表执行时间): a、读取文件1  ...
  • u013905744
  • u013905744
  • 2016-02-11 19:58:29
  • 5711

多线程实例、锁

多线程实例 进程是程序在计算机上的一次执行活动。当你运行一个程序,你就启动了一个进程。显然,程序是死的(静态的),进程是活的(动态的)。进程可以分为系统进程和用户进程。凡是用于完成操作系统的各种功能...
  • zzh_1032399080
  • zzh_1032399080
  • 2017-12-14 07:53:31
  • 37

cpu个数、核数、线程数、Java多线程关系的理解

一 cpu个数、核数、线程数的关系 cpu个数:是指物理上,也及硬件上的核心数; 核数:是逻辑上的,简单理解为逻辑上模拟出的核心数; 线程数:是同一时刻设备能并行执行的程序个数,线程数=cpu个数 *...
  • wutongyuWxc
  • wutongyuWxc
  • 2017-12-08 15:35:37
  • 2076

深入理解JVM-Java线程-实现方式,线程调度,状态

Java线程并发并不一定依赖多线程,但Java里谈论并发大多数都与线程脱不开关系。 线程是比进程更轻量级的调度执行单位,线程的引入可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源(...
  • nalanmingdian
  • nalanmingdian
  • 2017-08-31 16:07:34
  • 1064

Java多核cpu多线程运行效率分析

一直以为java线程开得越多效率越高,后来知道了执行的效率和cpu核心数有关,今天试了下多核cpu下多线程的计算: 本机i5四核,分别开启1、4、10、20、40、100、400个线程做100W次,m...
  • cxn945
  • cxn945
  • 2016-03-16 12:14:59
  • 3398

Tensorflow并行计算:多核(multicore),多线程(multi-thread),图分割(Graph Partition)

Tensorflow的并行计算:多核,多线程,图分割(Graph Partition) 利用tensorflow训练深度神经网络模型需要消耗很长时间,因为并行化计算就为提升运行速度提供了...
  • rockingdingo
  • rockingdingo
  • 2017-02-18 08:54:44
  • 11802
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 1万+
    积分: 1793
    排名: 2万+
    博客专栏
    最新评论