小编典典

进程与线程

在过去,每个进程仅具有一个执行 线程

,因此将进程直接调度到内核上(而在过去,几乎只有一个内核可以调度到该内核上)。但是,在支持线程的操作系统(几乎是所有现代操作系统)中, 线程

是调度的,而不是调度的进程。因此,在本讨论的其余部分中,我们将只讨论线程,并且您应该了解每个正在运行的进程都有一个或多个执行线程。

并行与并发

当两个线程都在运行 并行 ,它们都运行 在同一时间 。例如,如果我们有两个线程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线程和内核数相关推荐

  1. 简述java的线程_JAVA线程简述

    一.先谈谈并行与并发: 并行:是指两个或多个事件在同一时刻发生. 并发:是指连个或多个事件在同一时间间隔内发生. 二.接下来我们进入正题,讨论一下线程和进程: 1)什么是线程和进程? 进程:是一个具有 ...

  2. java 访问线程_java线程简介(共享对数据的访问)

    1. 共享变量 要使多个线程在一个程序中有用,它们必须有某种方法可以互相通信或共享它们的结果. 让线程共享其结果的最简单方法是使用共享变量.它们还应该使用同步来确保值从一个线程正确传播到另一个线程,以 ...

  3. java runnable 异常_JAVA 线程中的异常捕获

    在java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked e ...

  4. java+向前进一_Java 线程基础

    前言 线程并发系列文章: 熟练掌握线程原理与使用是程序员进阶的必经之路,网上很多关于Java线程的知识,比如多线程之间变量的可见性.操作的原子性,进而扩展出的Volatile.锁(CAS/Synchr ...

  5. java多线程抽奖_java 线程池、多线程并发实战(生产者消费者模型 1 vs 10) 附案例源码...

    导读 前二天写了一篇<Java 多线程并发编程>点我直达,放国庆,在家闲着没事,继续写剩下的东西,开干! 线程池 为什么要使用线程池 例如web服务器.数据库服务器.文件服务器或邮件服务器 ...

  6. java 优化线程_JAVA线程优化

    Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了, ...

  7. java怎么看具体被挂起的线程_Java线程的挂起、恢复和终止

    有时,线程的挂起是很有用的.例如,一个独立的线程可以用来显示当日的时间.如果用户不希望用时钟,线程被挂起.在任何情形下,挂起线程是很简单的,一旦挂起,重新启动线程也是一件简单的事. 挂起,终止和恢复线 ...

  8. java 精灵线程_Java线程的状态分析

    /*** 线程的状态分析 *@authoraa **/ public classThreadState {public static void main(String[] args) throwsEx ...

  9. linux下java转储线程_Java线程转储prio值与linux上的真实线程优先级不对应?

    我打算在我的 Java代码中使用线程优先级. 应用程序应在我的 Linux系统上运行: >uname -a Linux 3.0.0-15-generic #26-Ubuntu SMP x86_6 ...

  10. 抽象类java启动线程_java 线程复习笔记

    1. 线程基本概念 1.1 线程与进程 当一个程序进入内存运行时,即变成一个进程.进程是系统进行资源分配和调度的一个独立单元. 线程是进程的组成部分,一个进程可以拥有多个线程,一个线程必须有一个父进程 ...

最新文章

  1. [JAVAEE] 使用Postman测试接口
  2. TCP连接的建立和终止
  3. 大数据WEB阶段(十四)JavaEE开发模式
  4. 解决UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 108: ordinal not in range(12
  5. Java多线程与网络编程综合使用
  6. log函数 oracle power_博主营地 | Unity3D 实用技巧 基础数学库函数学习
  7. Python接口测试
  8. Swift是Android的未来么?
  9. 【洛谷P5018 对称二叉树】
  10. Precision、Recall、F计算:举例
  11. 好用的mysql数据字典工具
  12. 【笔记】知行合一王阳明:1472~1529
  13. R语言相关性分析与偏相关分析
  14. 10 个最佳地理空间数据分析 GIS 软件
  15. .net 实现网页截图
  16. 我的理想高中作文理想是计算机,我的理想高中优秀作文范文
  17. 免费网站数据抓取插件,可视化页面数据抓取插件
  18. 2022工作中遇到的问题四
  19. 前景广阔的技术---云计算
  20. oracle数据库主机CPU使用率高问题的分析及SQL优化

热门文章

  1. 花椒CEO吴云松:直播好像在一米之内,VR把人拉到了一米以内
  2. 5个馒头与100单生意
  3. 游戏——五子棋(与AI)
  4. 会声会影,premiere,Edius这三个软件的区别是什么?
  5. 架构面试精讲第四节 高并发下高可用、高性能架构详解
  6. Android compose 可观察状态
  7. java搭建分布式项目
  8. 怎样让自己变成一个赚钱机器?(方法论)
  9. springboot 使用 @Scheduled注解定时任务, 方法传参解决办法
  10. 应对公共部门银行的不良资产问题