package com.wf.zhang.juc; /* * 模拟 CAS 算法 */ public class TestCompareAndSwap { public static void main(String[] args) { final CompareAndSwap cas = new ...
分类:
编程语言 时间:
2019-12-22 14:18:23
阅读次数:
83
前言 前面四节学完了AQS最难的两种重入锁应用,下面两节进入实战学习,看看JUC包中其他的工具类是如何运用AQS实现特定功能的。今天一起看一下CountDownLatch。 CountDownLatch可以用来实现多个线程执行完一个功能后让另一个线程继续执行的功能。常见的场景比如大文件的处理,我们需 ...
分类:
其他好文 时间:
2019-12-21 22:16:24
阅读次数:
86
AtomicInteger 针对整数类型的原子操作,有getAndIncrement,compareAndSet等方法。 Thread 线程有三个常用属性,id,每次递增生成tid,同一个jvm中tid不重复;name,自定义的名字,从直观上识别是什么线程;daemon,是否是守护模式,为true表 ...
分类:
其他好文 时间:
2019-12-16 13:35:22
阅读次数:
220
要深入了解java并发知识,AbstractQueuedSynchronizer(AQS)是必须要拿出来深入学习的,AQS可以说是贯穿了整个JUC并发包,例如ReentrantLock,CountDownLatch,CyclicBarrier等并发类都涉及到了AQS。接下来就对AQS的实现原理进行分 ...
分类:
编程语言 时间:
2019-12-15 18:40:11
阅读次数:
107
上期回顾之前的一篇 剑指ConcurrentHashMap【基于JDK1.8】 给大家详细分析了一波JUC的ConcurrentHashMap,它在线程安全的基础上提供了更好的写并发能力。那么既然有map,是不是还有List呢?并发情况下应该用什么List嘞?接下来就是咋们的主角CopyOnWrit... ...
分类:
其他好文 时间:
2019-12-14 23:02:19
阅读次数:
132
1.JUC是什么? juc是java.util.concurrent. 1.1进程/线程 进程:一个程序运行就是一个进程,进程表示资源分配的基本单位(.exe程序如QQ,office等运行就是一个进程) 线程:一个进程里面的多个任务称为线程,程序运行的调度运行的最小单位(比如office检验单词报错 ...
分类:
编程语言 时间:
2019-12-14 09:42:07
阅读次数:
82
阻塞队列与普通的队列(LinkedList/ArrayList)相比,支持在向队列中添加元素时,队列的长度已满阻塞当前添加线程,直到队列未满或者等待超时;从队列中获取元素时,队列中元素为空 ,会将获取元素的线程阻塞,直到队列中存在元素 或者等待超时。 在JUC包中常用的阻塞队列包含ArrayBloc ...
分类:
数据库 时间:
2019-12-10 18:33:26
阅读次数:
96
前言 AQS即AbstractQueuedSynchronizer,是JUC包中的一个核心抽象类,JUC包中的绝大多数功能都是直接或间接通过它来实现的。本文是AQS系列的第一篇,后面会持续更新多篇,争取将JUC包中AQS相关的常用功能讲清楚,一方面巩固自己的知识体系,一方面亦可与各位园友互相学习。寒 ...
分类:
其他好文 时间:
2019-12-07 23:22:00
阅读次数:
123
一、JUC 简介 在Java5.0提供了java.util.concurrent(简称JUC)包,在此包中增加了并发编程常用工具类,包括线程池,异步IO和轻量级任务框架;还提供了设计用于多线程上下文中的Collection实现等。目的就是为了更好的支持高并发任务,让开发者利用这个包进行的多线程编程时 ...
分类:
编程语言 时间:
2019-12-06 21:11:33
阅读次数:
112
JUC是java.util.concurrent的缩写,java.util.concurrent是在并发编程中使用的工具类。 在以前的解决并发问题,一般是通过Synchronize关键字,现在可以通过juc下的工具类,来解决多线程并发问题。 首先写有个demo:使用synchronized进行上锁 ...
分类:
编程语言 时间:
2019-11-23 23:39:36
阅读次数:
97