摘要:
1.1 😭加油 2.1.进程和线程的区别 进程是操作系统分配资源的最小单位。 线程是依赖进程而存在的,线程是cpu调度的最小单位,也是进程的子集,是一段计算逻辑的cpu调度载体。 进程之间可以通过磁盘,网络进行通信,而同一个进程的资源都是共享的,所以线程之间可以直接通过内存来进行通信。 2.2.上 阅读全文
摘要:
线程 线程是调度CPU资源的最小单位,线程模型分为KLT模型与ULT模型,JVM使用的KLT模型,Java线程与OS线程保持1:1的映射关系,也就是说有一个java线程也会在操作系统里有一个对应的线程。Java线程有多种生命状态: NEW,新建 RUNNABLE,运行 BLOCKED,阻塞 WAIT 阅读全文
摘要:
原子操作 原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为”不可被中断的一个或一系列操作” 。在多处理器上实现原子操作就变得有点复杂。本文让我们一起来聊一聊在Inter处理器和Java里是如何实现原子操作的。 1.相关术语 术语名称 英文 解释 阅读全文
摘要:
一、Semaphore是什么 Semaphore 字面意思是信号量的意思,它的作用是控制访问特定资源的线程数目,底层依赖AQS的状态State,是在生产当中比较常用的一个工具类。 二、怎么使用Semaphore 构造方法 1 public Semaphore(int permits) 2 publi 阅读全文
摘要:
概要 BlockingQueue,是java.util.concurrent 包提供的用于解决并发生产者 - 消费者问题的最有用的类,它的特性是在任意时刻只有一个线程可以进行take或者put操作,并且BlockingQueue提供了超时return null的机制,在许多生产场景里都可以看到这个工 阅读全文
摘要:
并发之父 生平不识Doug Lea,学懂并发也枉然 Java并发编程核心在于java.util.concurrent包而juc当中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列、条件队列、独占获取、共享获取等,而这个行为的抽象就是基于AbstractQueuedSynchronizer简称 阅读全文
摘要:
一、设计同步器的意义 多线程编程中,有可能会出现多个线程同时访问同一个共享、可变资源的情况,这个资源我们称之其为临界资源;这种资源可能是:对象、变量、文件等。 共享:资源可以由多个线程同时访问 可变:资源可以在其生命周期内被修改 引出的问题: 由于线程执行的过程是不可控的,所以需要采用同步机制来协同 阅读全文
摘要:
一、CPU高速缓存(Cache Memory) CPU为何要有高速缓存 CPU在摩尔定律的指导下以每18个月翻一番的速度在发展,然而内存和硬盘的发展速度远远不及CPU。这就造成了高性能能的内存和硬盘价格及其昂贵。然而CPU的高度运算需要高速的数据。为了解决这个问题,CPU厂商在CPU中内置了少量的高 阅读全文
摘要:
一、什么是JMM内存模型 Java内存模型(Java Memory Model简称JMM)是一种抽象的概念,并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。JVM运行程序的实体是线程,而每个线程创建时JVM都会为其创建 阅读全文
摘要:
一、冯诺依曼计算机模型详解 现代计算机模型是基于-冯诺依曼计算机模型 计算机在运行时,先从内存中取出第一条指令,通过控制器的译码,按指令的要求,从存储器中取出数据进行指定的运算和逻辑操作等加工,然后再按地址把结果送到内存中去。接下来,再取出第二条指令,在控制器的指挥下完成规定操作。依次进行下去。直至 阅读全文