Java并发编程—— 底层基础概念

《组成原理》——硬件

计算机五大核心组件:

  • 控制器(Control)
  • 运算器(Datapath)
  • 存储器(Memory)
  • 输入(Input System)
  • 输出(Output System)
    在这里插入图片描述

与JMM相关的硬件结构

在这里插入图片描述如今采用多CPU,以及多核CPU
在多CPU时,多个进行需要进行上下文切换,代价高
多核CPU通信在内部总线,公用一个缓存

  • CPU寄存器:CPU寄存器是CPU内内存的基础。CPU在寄存器上的执行速度远大于在主存上的速度。
  • CPU缓存Cache:位于CPU与主存之间的一种中间的容量较小速度很高的存储器
  • 内存:计算机中公用的内存。

缓存行加锁

缓存行(cache line) 是CPU缓存中可分配、操作的最小存储单元。与CPU架构有关,通常有32字节、64字节、128字节不等。目前64位架构下,64字节最为常用。
缓存锁不需锁定总线,只需要“锁定”被缓存的共享对象(实际为:缓存行)即可,接受到lock指令,通过缓存一致性协议,维护本处理器内部缓存和其他处理器缓存的一致性。相比总线锁,会提高cpu利用率。

缓存一致性问题

当多个处理器的运算任务都涉及同一 块主内存区域时,将可能导致各自的缓存数据不一致的情况,如果真的发生这种情况,那同步 回到主内存时以谁的缓存数据为准呢?

缓存一致性协议: MESI

在这里插入图片描述

指令重排与指令流水

为了使得处理器内部的运算单元能尽量被充分利用,处理器可能会对输入代码进行乱序执 行(Out-Of-Order Execution)优化,处理器会在计算之后将乱序执行的结果重组,保证该 结果与顺序执行的结果是一致的,但并不保证程序中各个语句计算的先后顺序与输入代码中的 顺序一致。因此,如果存在一个计算任务依赖另一个计算任务的中间结果,那么其顺序性并不能靠代码的先后顺序来保证。与处理器的乱序执行优化似,Java虚拟机的即时编译器中也有 类似的指令重排序(Instruction Reorder)优化。
但是指令重排是怎样提高执行的效率的呢?

a=b+c;
d=e-f;

指令重排序前

指令重排序后
在这里插入图片描述

《操作系统》——线程基础

什么是线程

现代操作系统在运行一个程序时,会为其创建一个进程。例如,启动一个Java程序,操作系统就会创建一个Java进程。现代操作系统调度CPU的最小单元是线程,也叫轻量级进程 (Light Weight Process),在一个进程里可以创建多个线程,每个线程都有一个程序计数器(记录要执行的下一条指令),一组寄存器(保存当前线程的工作变量),堆栈(记录执行历史,其中每一帧保存了一个已经调用但未返回的过程)。 处理器在这些线程上高速切换, 让使用者感觉到这些线程在同时执行。

线程分类

用户级线程(User-Level Thread)

指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应 用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。
不需要用户态/核心态切换, 速度快。

内核线线程(Kernel-Level Thread)

线程的所有管理操作都是由操作系统内核完成的。
内核保存线程的状态和上下 文信息,当一个线程执行了引起阻塞的系统调用时,内核可以调度该进程的其他线程执行。

在这里插入图片描述

Java线程与系统内核的关系

在这里插入图片描述

Java线程的生命状态

在这里插入图片描述

  • NEW:刚刚创建的线程,还未执行。
  • RUNNABLE:当前执行的线程处在这一状态。
  • BLOCKED:如果线程在执行过程中遇到synchronized同步块,就会进入这一状态,这是线程会暂停执行,知道获取请求的锁。
  • WAITING:无限时间等待。
  • TIMED_WAITING:有限时间等待。
  • TERMINATED:线程执行完毕后进入这一状态,表示结束。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值