并发
文章平均质量分 91
刘卡卡阿
这个作者很懒,什么都没留下…
展开
-
并发|01|什么是并发编程问题?
源头之一:缓存导致的可见性问题可见性指的是当一个线程修改了某个共享变量的值,其他线程是否能够马上得知这个修改的值首先看下在底层的缓存可见性问题CPU缓存与内存的关系图1在单核上,所有线程运行在同一个CPU上,CPU 缓存与内存的数据一致性容易解决。因为所有线程都是操作同一个 CPU 的缓存,一个线程对缓存的写,对另外一个线程来说一定是可见的。多核时代,每颗 CPU 都有自己的缓存,这时 CPU 缓存与内存的数据一致性就没那么容易解决了,当多个线程在不同的 CPU 上执行时原创 2022-01-22 10:26:34 · 2051 阅读 · 0 评论 -
Java并发(9)--JUC并发工具类:CountDownLatch、Semaphore、CyclicBarrier、Exchanger
文章目录一. CountDownLatch:等待多线程完成1.1 CountDownLatch使用示例1.2 CountDownLatch源码分析二. Semaphore:控制并发线程数三. CyclicBarrier:同步屏障四. Exchanger: 交换者本文介绍常用的 JUC 并发工具类,分别是CountDownLatch:等待多线程完成、Semaphore:控制并发线程数、Cy...原创 2019-02-14 14:26:53 · 566 阅读 · 0 评论 -
Java并发(8)--JUC之同步队列器AQS原理、重入锁ReentrantLock、读写锁ReentrantReadWriteLock
文章目录一. AQS 原理1.1 addWaiter()是如何保证多线程运行下入队操作的正确性?1.2 enq(Node) 的CAS自旋volatile变量1.3 acquire(int)方法总结1.4 release(int) 方法总结1.5 AQS应用注意点二. 重入锁 ReentrantLock2.1 互斥锁 Mutex2.2 ReentrantLock 重进入的源码分析(非公平性)...原创 2019-02-14 14:24:54 · 555 阅读 · 0 评论 -
Java并发(10)-JUC线程池 Executor框架
一. new Thread 的弊端常见的new Thread 方式new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub }}).start();这种方式的主要不方便就是:每次new Thread新建对象性能差...原创 2019-02-15 21:23:23 · 288 阅读 · 0 评论 -
Java并发(7)--并发容器 J.U.C:Java.util.concurrency
一 :ArrayList、HashSet、HashMap等的并发容器以下部分内容引自慕课网实战·高并发探索(九):并发容器 J.U.C - 线程安全的集合与MapArrayList –> CopyOnWriteArrayList...原创 2019-01-21 10:13:14 · 221 阅读 · 0 评论 -
Java并发(3)--项目准备:环境初始化、案例准备、并发模拟工具、并发模拟代码
一 环境初始化现在码云上建立新仓库 Concurrency ,我的Concurrency通过 https://start.spring.io/ 新建 spring boot 项目 concurrency在本地Git仓库把 码云项目拉下来 git clone https://gitee.com/libinliu/Concurrency.git将 步骤2中的项目信息复制到 本地仓库中1...原创 2019-01-08 21:06:38 · 380 阅读 · 0 评论 -
Java并发(6)--线程安全策略:不可变对象、ThreadLocal、常见的线程安全与线程不安全类、同步容器
为避免在并发环境下的线程不安全问题,可以将对象确保为不可变对象,或者也可以采用线程封闭技术。文章目录一. 不可变对象-线程安全二. 线程封闭实现线程安全1. 堆栈封闭:局部变量,无并发问题2. ThreadLocal三. 常见线程不安全类1. StringBuilder 与 StringBuffer2. ArrayList,HashSet,HashMap 等Collection类一. 不可变...原创 2019-01-18 21:34:41 · 649 阅读 · 0 评论 -
Java并发(2)--并发基本:线程安全、锁优化
文章目录一、线程安全1. Java中的线程安全2. 线程安全的实现方法1 互斥同步2 synchronized 关键字3 非阻塞同步一、线程安全线程安全概念线程安全”定义:“当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的”。线程安全的...原创 2019-01-07 21:28:54 · 221 阅读 · 0 评论 -
Java并发(5)--线程安全发布对象:懒汉模式、饿汉模式
前言:方法逃逸与线程逃逸逃逸分析的基本行为就是分析对象动态作用域:当一个对象在方法中被定义后,它可能被外部方法所引用,例如作为调用参数传递到其他方法中去,称为方法逃逸。甚至可能被外部线程访问到,比如赋值给类变量或可以在其他线程中访问到的实例变量,称为线程逃逸。如果能证明一个对象不会逃移到方法外或者线程之外,也就是别的方法或线程无法通过任何途径访问到这个对象,则可能为这个变量进行一些高效的...原创 2019-01-17 22:07:10 · 599 阅读 · 0 评论 -
Java并发(4)--线程安全:原子性(Atomic)、可见性、有序性
1. 有序性原创 2019-01-17 19:33:38 · 1011 阅读 · 0 评论 -
Java并发(1)--并发基本:CPU缓存、Java内存模型、Java线程
2. 并发基本并发:多个线程操作相同的资源,保证线程安全,合理使用资源高并发:服务能同时处理很多请求,提高程序性能CPU多级缓存CPU多级缓存与缓存一致性CPU的频率越来远快,相对内存快了一个数量级,对于访存的操作CPU就需要等待主存,这样会导致资源的白白浪费,因此引入了缓存机制。cache 的工作原理是基于“局部性”原理,它包含以下两个方面:1. 时间局部性:如果某个数据被访...原创 2019-01-05 12:32:00 · 373 阅读 · 0 评论