[toc] 1、简介 Semaphore、CountDownLatch、CyclicBarrier 这三个工具类都是用于并发控制的操作,底层都是基于AQS去实现的; Semaphore(信号量): 提供一个竞争资源处理的工具,当系统内有足够的信号量事,线程可以去获取信号量执行操作,当信号量资源被使用 ...
分类:
编程语言 时间:
2020-01-05 22:20:24
阅读次数:
115
Collections 工具类和 Arrays 工具类常见方法 Collections Collections 工具类常用方法: 排序 查找,替换操作 同步控制(不推荐,需要线程安全的集合类型时请考虑使用 JUC 包下的并发集合) 排序操作 void reverse(List list)//反转 v ...
分类:
其他好文 时间:
2020-01-05 11:34:36
阅读次数:
102
一、简介 CopyOnWriteArrayList简介 ArrayList是一种 “列表” 数据结构,其底层是通过数组来实现元素的随机访问。JDK1.5之前,如果想要在并发环境下使用 “列表”,一般有以下3种方式: 1. 使用Vector类 2. 使用Collections.synchronized ...
分类:
其他好文 时间:
2020-01-03 21:20:45
阅读次数:
63
一、扩容的基本思路 JDK1.8中,ConcurrentHashMap最复杂的部分就是扩容/数据迁移,涉及多线程的合作和rehash。 扩容思路 Hash表的扩容包含的两个步骤: ① table数据的扩容 table数组的扩容,一般就是新建一个2倍大小的桶数组,这个过程通过一个单线程完成,且不允许出 ...
分类:
其他好文 时间:
2020-01-02 22:07:01
阅读次数:
67
一、前言 LockSupport工具类用于阻塞或唤醒线程。LockSupport定义了一组的公共静态方法,这些方法提供了最基本的线程组阻塞和唤醒功能,而LockSupport也成为构建同步组件的基础工具。 LockSupport定义了一组以park开头的方法用来阻塞当前线程,以及unpark(Thr ...
分类:
其他好文 时间:
2019-12-30 22:54:06
阅读次数:
101
>七大参数 在java中 ThreadPoolExecutor 是线程池类,这也是我们通常所说的线程池 下图是ThreadPoolExecutor构造方法 最后一个是全参数构造 里面有七大参数 corePoolSize 核心线程数量 maximumPoolSize 最大线程数 默认策略是超出会抛出异 ...
分类:
编程语言 时间:
2019-12-30 17:23:58
阅读次数:
125
读写锁简介 对共享资源有读和写的操作,且写操作没有读操作那么频繁。在没有写操作的时候,多个线程同时读一个资源没有任何问题,所以应该允许多个线程读取共享资源;但是如果一个线程想去写这些共享资源,就不应该允许其他线程对该资源进行读和写操作了。 读写锁ReentrantReadWriteLock,它表示两 ...
分类:
其他好文 时间:
2019-12-30 17:15:09
阅读次数:
66
前言 ReentrantLock即可重入锁,实现了Lock和Serializable接口 在java环境下ReentrantLock和Synchronized都是可重入锁 ReentrantLock构造函数中提供两种锁:创建公平锁和非公平锁(默认) ReentrantLock有三个内部类 Sync、 ...
分类:
其他好文 时间:
2019-12-30 14:42:02
阅读次数:
84
CountDownLatch是JUC包中提供的线程同步工具,使用CountDownLatch可以实现一个或多个线程等待直到一组操作在其他线程中被执行完成。
分类:
其他好文 时间:
2019-12-26 16:21:43
阅读次数:
99
此题考查的是线程间的通信方式。 可以利用park/unpark实现 可以利用volatile关键字实现 可以利用synchronized结合wait notify实现 可以利用JUC中的CountDownLatch实现 可以利用Condition中的await signal 实现 代码示例 利用Pa ...
分类:
编程语言 时间:
2019-12-24 23:40:45
阅读次数:
156