java 内核线程_Java线程和内核数
小编典典
进程与线程
在过去,每个进程仅具有一个执行 线程
,因此将进程直接调度到内核上(而在过去,几乎只有一个内核可以调度到该内核上)。但是,在支持线程的操作系统(几乎是所有现代操作系统)中, 线程
是调度的,而不是调度的进程。因此,在本讨论的其余部分中,我们将只讨论线程,并且您应该了解每个正在运行的进程都有一个或多个执行线程。
并行与并发
当两个线程都在运行 并行 ,它们都运行 在同一时间 。例如,如果我们有两个线程A和B,则它们的并行执行将如下所示:
CPU 1:A ------------------------->
CPU 2:B ------------------------->
当两个线程运行的 同时 ,它们的执行 重叠
。重叠可以两种方式之一发生:要么线程同时执行(即,如上所述,并行执行),要么它们的执行在处理器上交织,如下所示:
CPU 1:A -----------> B ----------> A -----------> B -------- ->
因此, 出于我们的目的 ,可以将并行性视为并发的特殊情况*
排程
但是,我们能够生成一个线程池(比方说30个),该线程池的数量要大于我们所拥有的内核(让我们说4个)的内核数量,并使它们并发运行。如果我们只有4个核心,这怎么可能?
在这种情况下,它们可以并发运行,因为CPU调度程序为这30个线程中的每个线程分配了一部分CPU时间。某些线程 将
并行运行(如果您有4个核心,则任何时候4个线程将同时并行运行),但是所有30个线程将同时运行。之所以可以去玩游戏或浏览网络,是因为这些新线程被添加到线程池/队列中,并且还分配了一部分CPU时间。
逻辑与物理核心
根据我目前的理解,一个核心一次只能执行1个进程
这不是 很 真实。由于非常聪明的硬件设计和流水线工作太长了(我不理解),一个物理核心实际上可能同时执行 两个完全不同的执行线程
。如果需要的话,请稍稍咀嚼一下这句话-这仍然让我震惊。
这种惊人的壮举被称为同时多线程(或通称超线程,尽管这是此类技术的特定实例的专有名称)。因此,我们具有 物理核心 (即实际的硬件CPU核心)和
逻辑核心 (即操作系统告诉软件可用的核心数)。逻辑核心本质上是一种抽象。在典型的现代Intel CPU中,每个物理核心都充当两个逻辑核心。
有人可以解释它是如何工作的,并建议对此做一些很好的阅读吗?
如果您真的想了解进程,线程和调度如何协同工作,我将推荐 操作系统概念 。
即使在我们自己的堆栈溢出中, 并行 和 并发 术语的确切含义也引起了激烈的争论。这些术语的含义在很大程度上取决于应用程序领域。
2020-09-15
java 内核线程_Java线程和内核数相关推荐
- 简述java的线程_JAVA线程简述
一.先谈谈并行与并发: 并行:是指两个或多个事件在同一时刻发生. 并发:是指连个或多个事件在同一时间间隔内发生. 二.接下来我们进入正题,讨论一下线程和进程: 1)什么是线程和进程? 进程:是一个具有 ...
- java 访问线程_java线程简介(共享对数据的访问)
1. 共享变量 要使多个线程在一个程序中有用,它们必须有某种方法可以互相通信或共享它们的结果. 让线程共享其结果的最简单方法是使用共享变量.它们还应该使用同步来确保值从一个线程正确传播到另一个线程,以 ...
- java runnable 异常_JAVA 线程中的异常捕获
在java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked e ...
- java+向前进一_Java 线程基础
前言 线程并发系列文章: 熟练掌握线程原理与使用是程序员进阶的必经之路,网上很多关于Java线程的知识,比如多线程之间变量的可见性.操作的原子性,进而扩展出的Volatile.锁(CAS/Synchr ...
- java多线程抽奖_java 线程池、多线程并发实战(生产者消费者模型 1 vs 10) 附案例源码...
导读 前二天写了一篇<Java 多线程并发编程>点我直达,放国庆,在家闲着没事,继续写剩下的东西,开干! 线程池 为什么要使用线程池 例如web服务器.数据库服务器.文件服务器或邮件服务器 ...
- java 优化线程_JAVA线程优化
Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了, ...
- java怎么看具体被挂起的线程_Java线程的挂起、恢复和终止
有时,线程的挂起是很有用的.例如,一个独立的线程可以用来显示当日的时间.如果用户不希望用时钟,线程被挂起.在任何情形下,挂起线程是很简单的,一旦挂起,重新启动线程也是一件简单的事. 挂起,终止和恢复线 ...
- java 精灵线程_Java线程的状态分析
/*** 线程的状态分析 *@authoraa **/ public classThreadState {public static void main(String[] args) throwsEx ...
- linux下java转储线程_Java线程转储prio值与linux上的真实线程优先级不对应?
我打算在我的 Java代码中使用线程优先级. 应用程序应在我的 Linux系统上运行: >uname -a Linux 3.0.0-15-generic #26-Ubuntu SMP x86_6 ...
- 抽象类java启动线程_java 线程复习笔记
1. 线程基本概念 1.1 线程与进程 当一个程序进入内存运行时,即变成一个进程.进程是系统进行资源分配和调度的一个独立单元. 线程是进程的组成部分,一个进程可以拥有多个线程,一个线程必须有一个父进程 ...
最新文章
- [JAVAEE] 使用Postman测试接口
- TCP连接的建立和终止
- 大数据WEB阶段(十四)JavaEE开发模式
- 解决UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 108: ordinal not in range(12
- Java多线程与网络编程综合使用
- log函数 oracle power_博主营地 | Unity3D 实用技巧 基础数学库函数学习
- Python接口测试
- Swift是Android的未来么?
- 【洛谷P5018 对称二叉树】
- Precision、Recall、F计算:举例
- 好用的mysql数据字典工具
- 【笔记】知行合一王阳明:1472~1529
- R语言相关性分析与偏相关分析
- 10 个最佳地理空间数据分析 GIS 软件
- .net 实现网页截图
- 我的理想高中作文理想是计算机,我的理想高中优秀作文范文
- 免费网站数据抓取插件,可视化页面数据抓取插件
- 2022工作中遇到的问题四
- 前景广阔的技术---云计算
- oracle数据库主机CPU使用率高问题的分析及SQL优化