Java多线程如何实现在多CPU上分布

一个JAVA线程就是一个OS线程,线程调度依赖于操作系统,JVM层面不干预。JAVA语言层面讲,只是规范,并不要求具体如何实现。具体的实现模型有几种,比如1:1,N:1, 1:N。在LINUX下,你可以用JNI来调用taskset,实现把线程分配到某一个CPU上。

Java多线程如何实现在多CPU上分布-Worktile社区

一个JAVA线程就是一个OS线程,线程调度依赖于操作系统,JVM层面不干预。JAVA语言层面讲,只是规范,并不要求具体如何实现。具体的实现模型有几种,比如1:1,N:1, 1:N。在LINUX下,你可以用JNI来调用taskset,实现把线程分配到某一个CPU上。

Java语言的线程,从规范的角度来说是不强制要求任何具体的实现方式的。采用1:1、N:1、M:N模型都可以。

具体到我们平时常用的JVM实现,Oracle/Sun的HotSpot VM,它是用1:1模型来实现Java线程的,也就是说一个Java线程是直接通过一个OS线程来实现的,中间并没有额外的间接结构。而且HotSpot VM自己也不干涉线程的调度,全权交给底下的OS去处理。所以如果OS想把某个线程调度到某个CPU/核上,它就自己弄了。

这个意义上说Java程序跑在HotSpot VM上开多个Java线程,就跟一个C/C++程序开了多线程来跑没有任何两样。那么怎么控制这些线程分布到不同的CPU核上去呢?

在Linux上的话,可以用taskset来把线程绑在某个指定的核上。

JVM的实现有很多种,并不是所有JVM都像HotSpot VM这样总是用1:1模型的。在JVM里面也存在内存屏障(jvm的内存屏障),因为不是实体的机器,是逻辑的概念;所有实现JVM规范的虚拟机,必须实现四个屏障,Load和stored的四种组合;volatile也是这个作用可见性,和静止指令重排,那在最终的CPU是如何实现JVM规定的这些规范的呢?通过Hotspot(热点),通过汇编语言,lock、add来对CPU寄存器前面加零,也就是总线和缓存锁的概念。

延伸阅读:

什么是多线程

多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理或同时多线程处理器。在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。

在计算机编程中,一个基本的概念就是同时对多个任务加以控制。许多程序设计问题都要求程序能够停下手头的工作,改为处理其他一些问题,再返回主进程。可以通过多种途径达到这个目的。最开始的时候,那些掌握机器低级语言的程序员编写一些“中断服务例程”,主进程的暂停是通过硬件级的中断实现的。尽管这是一种有用的方法,但编出的程序很难移植,由此造成了另一类的代价高昂问题。中断对那些实时性很强的任务来说是很有必要的。但对于其他许多问题,只要求将问题划分进入独立运行的程序片断中,使整个程序能更迅速地响应用户的请求。

文章标题:Java多线程如何实现在多CPU上分布,发布者:小编,转载请注明出处:https://worktile.com/kb/p/36327

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编站长
上一篇 2023年1月31日 下午8:15
下一篇 2023年1月31日 下午8:16

相关推荐

  • tomcat和nginx的区别是什么

    tomcat和nginx的区别在于以下几个方面: 1、从应用方面来说。tomcat一般都是做动态分析才能使用,支持jsp分析,需要配置JDK支持;2、在性能方面。如果不做系统调优,tomcat一般支持并发不高于100个,nginx在静态方面支持并发容易达到几万等。 一、区别 1、从应用方面来说。to…

    2023年3月8日
    61900
  • 硬件开发用什么项目管理系统

    可以用以下项目管理系统:1. JIRA;2. Trello;3. Asana;4. Microsoft Project;5. GitLab。JIRA是Atlassian公司开发的一款集任务跟踪、缺陷管理和项目管理于一体的软件。它被广泛应用于软件开发领域,但也适用于硬件开发。 1. JIRA JIRA…

    2023年2月28日
    29100
  • 深度学习和强化学习之间的差别

    区别有:1、定义不同;2、学习目标不同;3、应用场景差异;4、数据来源和处理方式不同;5、与环境的交互性;6、在实际应用中的表现和挑战。其中,定义不同是指深度学习关注的是从大量数据中学习特征,而强化学习则是关于如何采取行动以最大化某种长期回报。 1、定义不同 深度学习:它是机器学习的一个子领域,通过…

    2023年7月23日
    54400
  • 知识管理是什么

    知识管理是知识经济时代涌现出来的一种最新管理思想与方法, 它融合了现代信息技术、知识经济理论、企业管理思想和现代管理理念。知识管理是企业管理的一项重要内容,主流商业管理课程如EMBA、及MBA等均将“知识管理”作为一项管理者的必备技能要求包含在内。 知识管理是知识经济时代涌现出来的一种最新管理思想与…

    2023年4月30日
    4200
  • 国内中型企业都在用哪些项目管理系统软件

    国内中型企业使用比较广泛的10大项目管理软件:1.研发项目管理软件PingCode;2、项目协作工具Worktile;3.开源项目软件Redmine;4.免费项目管理软件Trello;5.无代码项目管理软件Moday;6.IT项目追踪管理工具Jira;7.小团队项目管理软件 Teambition;8…

    2023年2月15日
    15400
  • C++中array和vector各有哪些对方不具备的功能

    C++中array具备而vector不具备的功能有:1、更快的访问速度;2、适用于小数组等。vector具备而array不具备的功能有:1、动态分配内存;2、可变大小等。更快的访问速度是指由于array的内存分配是静态的,所以使用array比使用vector更加高效。 一、C++中array具备而v…

    2023年4月15日
    36100
  • 阐明c#的思想是什么

    c#的思想是:面向对象(oop)”面向对象”的核心在于,先把所有要解决的分类。用计算机来解决人们实际问题的思维方式,即编程思想。C#是一种面向对象的,从程序语法上看,面向对象比结构性的程序多了两个特性。 一、c#的思想 C#的编程思想就是面向对象(oop)”面向对…

    2023年3月19日
    15600
  • AI如何在医疗领域发挥作用

    近年来,人工智能(AI)已成为医疗行业的变革力量。其主体作用体现在准确性提高、效率增加、个性化医疗支持、新药研发加速四个核心领域。AI技术通过对病理图像的精准分析(1)、提升诊疗速度(2)、基于大数据的个性化医疗方案制定(3)、新药发现和研发周期缩短(4)等方面,显著提升了医疗健康服务的品质和效率。…

    2023年11月24日
    2200
  • 工作进度表怎么做

    以excel为例,做工作进度表的步骤:1、打开excel表格;2、创建项目进度表格;3、标记预计完成天数;4、设置单元格格式;5、选择“百分比”;6、选择一个颜色数据条;7、合并;8、输入进度比例。打开excel表格需要打开一个空白的表格。 一、制作工作进度表的步骤 二、如何创建适合的工作进度表 延…

    2023年2月24日
    46000
  • javaweb系统在高并发下怎样实现订单号生成少数

    javaweb系统在高并发下可以用以下方法实现订单号生成少数:1、UUID;2、数据库自增;3、雪花算法;4、分布式组件。UUID 是Universally Unique Indentifier的缩写,翻译为通用少数识别码,UUID 的标准形式包含 32 个 16 进制数字,以连字号分为五段。 1、…

    2023年2月8日
    89400

发表回复

登录后才能评论
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部