为了之后要写的volatile,这篇和下一篇都将为他做一下铺垫。不讲那么详细,但我也希望大家都能看懂。我们先来看一下计算机的组成吧

核心的两大块就是CPU和内存,他们之间通过总线来交互,总线分为数据总线,控制总线,地址总线,一个程序是如何在电脑上执行的呢,比如一个程序xx.exe文件,平时是放在磁盘上的,在你双击的时候他会被扔到内存作为一个进程存在,然后main线程将一条条指令和数据传递给CPU,CPU做完操作后再写回到内存,所以一个程序的执行会牵扯到内存的存储,CPU的计算,以及他们之间的通信。因为CPU的速度和内存的速度差距很大,所以才有了缓存,那差距有多大呢,看下面这个图

CPU比内存的速度快了大概一百倍,目前经过工业界大量的实践,大多数的情况下CPU到内存之间有三级缓存存在。如果要了解存储器的结构的话,看下面这张图

大家看一下图上画很明显了,以及多核CPU缓存的结构,缓存是在CPU中,CPU取数据时从L1 》L2》L3》内存。以及一个双核CPU有独立的L1,L2缓存,共享L3缓存。一个线程在CPU执行的时候,会将数据放入寄存器中,ALU去计算,那又有一个线程要过来计算,那就把第一个线程存到别的地方去,第二个线程数据放到寄存器,ALU进行计算,这就是线程切换。这里的超线程就是一个ALU对应了两组寄存器,这里同时活着的线程可以有两个,这时候线程切换的时候就不需要将数据更换,只需要ALU挪一下地方去计算就可以了

java 线程 寄存器 地址_Java高级进阶多线程学习之路(四)CPU与内存相关推荐

  1. Java多线程学习之路(四)---死锁(DeadLock)

    Java多线程学习之路(四)-死锁(DeadLock) 1.定义 死锁就是多个线程在竞争共享资源的时候,相互阻塞,不能脱身的状态(个人理解).其实死锁一定程度上可以看成一个死循环. 举个现实生活中的例 ...

  2. 基于Java线程池读取数据库中数据(学习+运用)

    基于Java线程池读取数据库中数据(学习+运用) 以下是学习内容 Main.java import java.util.concurrent.ArrayBlockingQueue; import ja ...

  3. java怎样获取线程的进度_java中的多线程——进度2

    多线程总结: 1,进程和线程的概念. |--进程:是一块包含了某些资源的内存区域.操作系统利用进程把它的工作划分为一些功能单元: 最小的内存单元: 是具有一定独立功能的程序关于某个数据集合上的一次运行 ...

  4. java 线程面试题_JAVA多线程面试题(一)

    1.进程和线程的区别 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运行环境是一个包含了不同的类和程序的单一进 ...

  5. java线程的优点_Java使用多线程的优势

    Java使用多线程的优势 如果使用得当,线程可以有效地降低程序的开发和维护等成本,同时提升复杂应用程序的性能.那么Java使用多线程的优势具体有哪些呢,一起来了解一下! 1.发挥多处理器的强大能力 现 ...

  6. java线程安全例子_Java总结篇系列:Java多线程(三)

    本文主要接着前面多线程的两篇文章总结Java多线程中的线程安全问题. 一.一个典型的Java线程安全例子 1 public classThreadTest {2 3 public static voi ...

  7. java线程怎么用_Java多线程基本使用

    一.概念 1.进程 1.1进程:是一个正在进行中的程序,每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元. 1.2线程:就是进程中一个独立的控制单元,线程在控制着进程的执行,一 ...

  8. java线程集合点_Java多线程学习笔记(三) 甚欢篇

    使人有乍交之欢,不若使其无久处之厌 <小窗幽记>很多时候,我们需要的都不是再多一个线程,我们需要的线程是许多个,我们需要让他们配合.同时我们还有一个愿望就是复用线程,就是将线程当做一个工人 ...

  9. java 线程 状态 图_Java线程中的生命周期和状态控制图文详解

    这篇文章主要介绍了Java线程的生命周期和状态控制,需要的朋友可以参考下 一.线程的生命周期 线程状态转换图: 1.新建状态 用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于 ...

  10. java 线程组作用_Java线程组(ThreadGroup)使用

    JDK 对线程组类注释: A thread group represents a set of threads. In addition, a thread group can also includ ...

最新文章

  1. PHP TP5框架 安装运行 Warning: require(E:\phpstudy_pro\WWW\TP5\tp5\public/../thinkphp/base.php): failed to
  2. struts2学习笔记--线程安全问题小结
  3. 开源 java CMS - FreeCMS2.8 自定义标签 siteOne
  4. ajax.beginform onfailure,如何使用Ajax.BeginForm OnSuccess和OnFailure方法?
  5. [Javascript]编程风格
  6. 东京理科大学 计算机系,东京理科大学
  7. 蝙蝠未能连接到服务器是什么原因,家里飞来一只蝙蝠,怎么办?早点知道,有备无患!...
  8. 7-1 公路村村通 (30 分)
  9. 《计算复杂性:现代方法》——第0章 记 号 约 定 0.1 对象的字符串表示
  10. [转载].程序匠人 - 程序调试(除错)过程中的一些雕虫小技
  11. 基于MicroPython实现ESP32+SSD1306的小恐龙游戏
  12. 数据库设计文档编写模板
  13. 如何将 CHM 文件翻译成中文
  14. ST板块大幅下跌 不少ST股逆势上涨
  15. word水印为什么被文字盖住了?
  16. 概率论中常见分布的数学期望、方差及特征函数推导 (一)离散型随机变量
  17. Bouncy Castle 密码包的配置及使用详解
  18. 基础语法值c++提高编程
  19. PLC滑动平均值滤波(SMART 200梯形图篇)
  20. 《菜菜的机器学习sklearn课堂(2),Java编程百度云

热门文章

  1. 排序算法--直接插入排序
  2. 孙鑫VC学习笔记:第十二讲 (三) 用C++函数读写文件
  3. java给方法参数赋值_java方法参数的赋值问题实例源码介绍
  4. 拓端tecdat|【视频】R语言生存分析原理与晚期肺癌患者分析案例|数据分享
  5. 拓端tecdat|Python中用Prophet模型对天气时间序列进行预测与异常检测
  6. C++概述部分内容记录
  7. 求Python字典最小(最大)values对应的key
  8. 计算机技术在音乐专业中的应用与探索,计算机技术在音乐教学中的应用与研究...
  9. 指定LINUX内存大小,linux下内存大小、起始地址的解析与修改
  10. Win10+caffe+CUDA9.1+vs2013+Matlab2018b+GPU环境,跑通faster_rcnn-master