并发编程
头发阻挡了我对知识的吸收
还没秃的小菜鸡
头发阻挡了我对知识的吸收
展开
-
Java线程池
Executor框架 ThreadPoolExecutor构造方法 newFixedThreadPool newCachedThreadPool newSingleThreadExecutor原创 2020-10-03 14:42:23 · 162 阅读 · 0 评论 -
ReentrantLock&CountDownLatch & Semaphore & CyclieBarries 实现原理详解
例子一: public class FightQueryDemo { private static List<String> company= Arrays.asList("东方航空","南方航空","海南航空"); private static List<String> fightList=new ArrayList<>(); pu...原创 2020-09-28 16:45:11 · 514 阅读 · 0 评论 -
Java并发之AQS详解
它维护了一个volatile int state(代表共享资源)和一个FIFO线程等待队列(多线程争用资源被阻塞时会进入此队列)。state的访问方式有三种: getState() setState() compareAndSetState() AQS定义两种资源共享方式:Exclusive(独占,只有一个线程能执行,如ReentrantLock)和Share(共享,多个线程可同时执行,如S...原创 2020-09-28 15:12:54 · 242 阅读 · 0 评论 -
并发编程之 CAS 的原理
什么是CAS CAS (compareAndSwap),中文叫比较交换,一种无锁原子算法。过程是这样:它包含 3 个参数 CAS(V,E,N),V表示要更新变量的值,E表示预期值,N表示新值。仅当 V值等于E值时,才会将V的值设为N,如果V值和E值不同,则说明已经有其他线程做两个更新,则当前线程则什么都不做。最后,CAS 返回当前V的真实值。CAS 操作时抱着乐观的态度进行的,它总是认为自己可以成...原创 2020-09-27 11:17:24 · 312 阅读 · 0 评论 -
Synchronized原理
Synchronized加锁方式 同步实例方法,锁是当前实例对象 同步类方法,锁是当前类对象 同步代码块,锁是括号里面的对象 Monitor机制 什么是Monitor?我们可以把它理解为一个同步工具,也可以描述为一种同步机制,它通常被描述为一个对象。与一切皆对象一样,所有的Java对象是天生的Monitor,每一个Java对象都有成为Monitor的潜质,因为在Java的设计中,每一个Java对象自打娘胎里出来就带了一把看不见的锁,它叫做内部锁或者Monitor锁。 每个对象都存在着一个 monit原创 2020-09-25 17:35:16 · 116 阅读 · 0 评论 -
Java线程的6种状态
源码定义 public enum State { /** * Thread state for a thread which has not yet started. */ NEW, /** * Thread state for a runnable thread. A thread in the runnable * state is executing in the Java vi原创 2020-09-25 15:51:40 · 335 阅读 · 0 评论 -
Thread的实现原理
Java中Thread new Thread(new Runnable() { @Override public void run() { } }).start(); Thread执行start()方法后为什么会会掉run()方法?线程执行为什么不能直接调用run()方法而要调用start()方法? java.lang.Thread public synchronized void start() {原创 2020-09-24 17:23:08 · 1232 阅读 · 1 评论 -
进程&线程&协程
进程 进程,直观点说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己独立的地址空间,有自己的堆,上级挂靠单位是操作系统。操作系统会以进程为单位,分配系统资源(CPU时间片、内存等资源),进程是资源分配的最小单位。 线程 线程,有时被称为轻量级进程(Lightweight Process,LWP),是操作系统调度(CPU调度)执行的最小单位。 进程和线程的区别与联系 【区别】: 调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位; 并发性:不仅进程之间可以并发执转载 2020-09-24 15:33:24 · 138 阅读 · 0 评论 -
volatile简介
volatile是Java虚拟机提供的轻量级的同步机制 volatile语义有如下两个作用 可见性:保证被volatile修饰的共享变量对所有线程总数可见的,也就是当一个线程修改了一个被volatile修饰共享变量的值,新值总是可以被其他线程立即得知。 有序性:禁止指令重排序优化。 实现原理 JMM内存交互层面:volatile修饰的变量的read、load、use操作和assign、store、write必须是连续的,即修改后必须立即同步回主内存,使用时必须从主内存刷新,由此保证volatile变量的原创 2020-09-17 23:54:27 · 392 阅读 · 0 评论 -
Java内存模型JMM
我们常说的JVM内存模式指的是JVM的内存分区;而Java内存模式是一种虚拟机规范。 Java虚拟机规范中定义了Java内存模型(Java Memory Model,JMM),用于屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效果,JMM规范了Java虚拟机与计算机内存是如何协同工作的:规定了一个线程如何和何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步的访问共享变量。 硬件内存架构 计算机的组成 电脑中,CPU的运行计算速度是非常快的,而其原创 2020-09-16 23:28:27 · 149 阅读 · 0 评论 -
并发编程基础
并发编程基础概念 计算机组成原理 现代计算机硬件原理图 冯·诺依曼计算机的特点 计算机由运算器、存储器、控制器、输入设备和输出设备五大部件组成 指令(程序)和数据以二进制不加区别地存储在存储器中 程序自动运行 运算器和控制器封装到一起,加上寄存器组和cpu内部总线构成中央处理器(CPU)。cpu的根本任务,就是执行指令,对计算机来说,都是0,1组成的序列,cpu从逻辑上可以划分为3个模块:控制单元、运算单元和存储单元。这三个部分由cpu总线连接起来。 cpu原理图 CPU的运行原理就是:控制单元在时原创 2020-09-16 16:41:06 · 402 阅读 · 2 评论 -
并发
原创 2020-09-07 07:57:06 · 114 阅读 · 0 评论