线程系列
文章平均质量分 97
STRANG-P
这个作者很懒,什么都没留下…
展开
-
线程系列 7 - JUC高并发容器类
JUC高并发容器是基于非阻塞算法(或者无锁编程算法)实现的容器类,无锁编程算法主要通过 CAS(保障操作的原子性) + Volatile(保障变量内存的可见性)组合实现。① 开销较小:不需要在内核态和用户态之间切换进程。② 读写不互斥:只有写操作需要使用基于CAS机制的乐观锁,读读操作之间可以不用互斥。JUC包中提供了List、Set、Queue、Map各种类型的高并发容器。ListJUC包中的高并发List主要有CopyOnWriteArrayList,对应的基础容器为ArrayList。原创 2023-07-25 21:40:37 · 265 阅读 · 0 评论 -
线程系列 4 - synchronized 和线程间的通信
线程系列 4 - synchronized 和线程间的通信1、关于内置锁 和 synchronized1.1、三种内置锁对比1.2、关于 synchronized1.2.1、synchronized 的使用1.2.1、synchronized 的执行过程2、线程间的通信2.1、对象的 wait() 方法2.2、对象的 notify() 方法2.3、线程通信的要点2.4、线程通信示例3、synchronized 八锁现象3.1、Lock13.2、Lock23.3、Lock33.4、Lock43.5、Lock5原创 2023-07-25 21:09:46 · 206 阅读 · 0 评论 -
线程系列 3 - 关于 CompletableFuture
线程系列3-关于 CompletableFuture1、从 Future 接口说起2、CompletableFuture 对 Future 的改进2.1、CompletionStage 接口类2.2、runAsync 和 supplyAsync 创建子任务2.3、 whenComplete 和 exceptionally 异步任务回调钩子2.4、调用 handle() 方法统一处理异常和结果2.5、异步任务的串行执行2.5.1、thenApply() 方法2.5.2、thenRun() 方法2.5.3、th原创 2023-07-18 22:17:01 · 360 阅读 · 0 评论 -
线程系列 6 - JUC相关的显示锁
通常,一个锁提供对共享资源的独占访问:在一个时间只有一个线程可以获得锁和所有访问共享资源,需要先获得锁。ReentrantReadWriteLock 主要特性 公平性 支持公平锁和非公平锁,默认是非公平锁,可以根据构造方式设置公平锁。// 构造函数默认是false 非公平锁,由于读线程之间没有锁竞争,所以读操作,没有公平性和非公平性。:每个线程获取锁的顺序是按照线程访问锁的先后顺序获取的,最前面的线程总是最先获取到锁。:每个线程获取锁的顺序是随机的,并不会遵循先来先得的规则,所有线程会竞争获取锁。原创 2023-04-04 12:44:42 · 403 阅读 · 0 评论 -
Java 并发编程 - CyclicBarrier
J.U.C 之 AQS - CyclicBarrier1、关于 CyclicBarrier2、await 方法2.1 不带参的 await 方法2.2 带参的 await 方法2.3 CyclicBarrier 带 Runnable 参数构造3、CyclicBarrier 与 CountDownLatch 的区别1、关于 CyclicBarrier CyclicBarrier : ...原创 2020-04-21 16:44:01 · 193 阅读 · 0 评论 -
Java 并发编程 - 共享锁 Semaphore
J.U.C 之 AQS - Semaphore1、关于 Semaphore2、acquire 和 release 方法2.1 acquire 和 release 有参方法2.2 acquire 和 release 无参方法3、tryAcquire 方法1、关于 Semaphore Semaphore...原创 2020-04-21 14:15:38 · 251 阅读 · 0 评论 -
Java 并发编程 - CountDownLatch
J.U.C 之 AQS - CountDownLatch1、关于 CountDownLatch2、CountDownLatch 源码分析2.1 源码示例2.2 源码分析3、实用示例3.1 await() + countDown()3.2 await(timeout, timeUnit) + countDown()1、关于 CountDownLatch countDownLatch...原创 2020-04-20 10:44:49 · 199 阅读 · 0 评论 -
线程系列 2 - 并发编程之线程池 ThreadPool 的那些事
线程池 ThreadPool1、New Thread 弊端2、线程池的好处3、线程池 - ThreadPoolExecutor3.1 核心参数3.2 核心方法3.3 监控方法3.4 Executors 提供四种线程池3.4.1 newCachedThreadPool3.4.2 newFixedThreadPool3.4.3 newScheduledThreadPool3.4.4 newSingle...原创 2020-04-16 12:04:51 · 366 阅读 · 0 评论 -
foreach、Iterator、for 使用中的线程安全问题
Foreach、Iterator、For 使用中的线程安全问题1、foreach、iterator、for 三者差别2、代码实践foreachIteratorfor3、异常分析4、解决上述报错1、foreach、iterator、for 三者差别 1. 条件差别 for需要知道集合或数组的大小,而且需要是有序的,不然无法遍历;foreach和iterator都不需...原创 2020-04-15 14:37:53 · 7075 阅读 · 0 评论 -
详聊单例模式
线程的安全发布-单例模式1、安全发布对象2、七种单例模式的写法2.1 普通的懒汉模式2.2 普通的饿汉模式2.3 线程安全的懒汉模式2.4 双重同步锁单例模式2.5 volatile + 双重同步锁单例模式2.6 静态代码块的饿汉模式2.7 枚举模式单例(推荐写法)1、安全发布对象 发布对象:使一个对象能够被当前范围之外的代码所使用。对象逸出:一种错误的发布。当一个对象还没有构造...原创 2020-04-11 16:53:51 · 138 阅读 · 0 评论 -
Java 并发编程 - 线程安全性
线程安全性,相关知识梳理1、并发模拟工具2、线程安全性2.1 原子性2.1.1 线程原子性-Atomic包2.1.2 线程原子性-锁2.2 可见性2.2.1 可见性 - synchronized2.2.2 可见性 - volatile2.3 有序性2.3.2 有序性 - happens-before原则1、并发模拟工具 Postman : Http请求模拟工具。Apac...原创 2020-04-10 16:22:26 · 153 阅读 · 0 评论 -
Java 内存模型-同步操作与规则
Java 内存模型-同步操作与规则Java 内存模型-同步操作与规则1、Java 内存模型一同步八种操作2、Java 内存模型一同步规则.Java 内存模型-同步操作与规则 1、Java 内存模型一同步八种操作 lock (锁定):作用于主内存的变量,把一个变量标识为一条线程独占状态。unlock (解锁):作用于主内存的变量,把一个处于锁定...原创 2020-04-09 22:01:08 · 181 阅读 · 0 评论 -
线程系列 5 - CAS 和 JUC原子类
线程的堵塞和死锁1、线程状态2、线程堵塞3、线程死锁1、线程状态 线程有以下四种状态 :New:线程对象已经创建,但尚未启动,所以不可运行。Runnable:可运行。一旦时间分片机制有空闲的CPU周期提供给该线程,那该线程便可立即开始运行。因此,线程可能在、也可能不在运行当中,但一旦条件许可,没有什么能阻止它的运行,此状态下该线程既没有“死”掉,也没有被“堵塞”。Dead:...原创 2019-10-23 10:52:40 · 770 阅读 · 0 评论 -
模拟银行存取款
这里写自定义目录标题声明实体类存取款业务类启动类声明实体类package com.huajie.ebideureka.service.testCount;/** * @author * @title: Count * @description: TODO * @date 2019/10/21 */public class Count { // 金额 pri...原创 2019-10-23 11:02:01 · 550 阅读 · 0 评论 -
Thread 的 join() 方法
关于 Thread 的 join 方法 1、join() 方法说明2、代码演示2.1 添加 join() 方法后2.2 添加 join() 方法前2.3 对比说明3、源码理解 线程模块,计划用一个系列博文整理总结。上一篇博文: 《线程系列1:创建线程》 1、join() 方法说明 join() 是Thread的实例方...原创 2019-06-06 16:07:32 · 6390 阅读 · 0 评论 -
线程系列 1 - 线程基础
创建线程1、Thread 类和 Runnable 接口2、创建线程2.1 实现Runnable接口。2.1.1 实现步骤2.1.2 示例代码方式一:在Runnable的实现类中,通过构造方法启动线程。方式二:在具体业务中,启动线程。2.2 继承Thread类。2.2.1 实现说明2.2.2 代码示例方式一:通过构造方法启动线程。方式二:在具体业务中,启动线程。1、Thread 类和 Runnab...原创 2019-06-06 10:23:07 · 799 阅读 · 0 评论