
------ 3. 并发类
敲木鱼的小和尚
热衷于专研技术的大好青年
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
CompletionService
小案例 代码public class ComplateServiceDemo { public static void main(String[] args) { ExecutorService executorService = Executors.newFixedThreadPool(3); CompletionService service = ...原创 2019-12-24 13:33:54 · 212 阅读 · 0 评论 -
Java源码学习--并发量06--01--AtomicInteger
AtomicInteger 一、结构 实现了Number抽象类,定义了一些默认方法 public abstract class Number implements java.io.Serializable { public abstract int intValue(); public abstract long longValue(); public abstract...原创 2019-12-10 17:58:41 · 127 阅读 · 0 评论 -
Java源码学习--并发锁05--03--CountDownLatch
CountDownLatch 俗称倒计时,技术锁,并不是为了加锁,而是通过计数达到等待的功能 等待的形式 让一组线程在全部启动完成之后,在一起执行(先启动的线程需要阻塞等待后启动的线程,直到一组线程全部都启动完成后,再一起执行) 主线程等待另外一组线程都执行完成之后,再继续执行。 一、重要方法 1. await 流程 CountDownLatch |->...原创 2019-12-05 15:55:42 · 112 阅读 · 0 评论 -
Java源码学习--并发锁05--02--ReentrantLock
AQS的具体实战–ReentrantLock可重入锁 构造器接受fairness参数,fairness是true时,保证获取锁的顺序,false不保证 公平锁的吞吐量较低,获得锁的公平性不能代表线程调度的公平性 一、类结构 ReentrantLock实现了Lock接口 Lock接口定义了各种加锁,释放锁的方法public interface Lock { // 获得锁方法,获取不到...原创 2019-12-03 22:28:17 · 117 阅读 · 0 评论 -
Java源码学习--并发锁05--01--AQS
基本属性 总体流程 一、类结构 源码 代码public abstract class AbstractQueuedSynchronizer extends AbstractOwnableSynchronizer implements java.io.Serializable { .... } 解释 AQS是抽象类,是给子类使用,同样的,抽出了很多共用的方法,...原创 2019-12-03 17:48:57 · 136 阅读 · 0 评论 -
Java源码学习--并发_线程池04--01--ThreadPoolExecutor
Executor(I)->ExecutorService(I)->AbstractExecutorService©->ThreadPoolExecutor© 通过接口的继承关系,可以发现,单一职责原则,Executor就是用来负责任务的执行,ExecutorService用来管理任务,必然会存在一个抽象类,来封装ExecutorService中针对线程的通过管理方法,子类可以使...原创 2019-11-29 16:12:34 · 207 阅读 · 1 评论 -
Java源码学习--并发线程属性类03--01--ThreadLocalMap->ThreadLocal
ThreadLocal ThreadLocal提供了一种方式,在多线程环境下,每个线程都可以拥有自己独特的数据,并且可以在整个线程执行过程中,从上由下传递。 1. 结构 类的定义:泛型类,支持其他类型public class ThreadLocal<T> { } 1.1 关键属性 代码// threadLocalHashCode 表示当前 ThreadLocal 的 ha...原创 2019-11-28 00:44:49 · 160 阅读 · 1 评论 -
Java源码学习--并发任务类02--01--FutureTask
Callable Callable是一个接口,约定了线程要做的事情,和Runnable一样,区别在于有返回值 代码public interface Callable<V> { V call() throws Exception; } Runnable接口 该接口指定了线程执行的任务,实现了此接口的类,即可作为线程执行的任务,进行执行 代码public interface...原创 2019-11-27 19:54:13 · 147 阅读 · 1 评论 -
Java源码学习--并发集合类01--02--ConcurrentHashMap
属性 内存中属性的偏移量,用于在CAS操作中,获取到属性对应的内存地址,从而获取到值 // Unsafe mechanics private static final sun.misc.Unsafe U; private static final long SIZECTL; private static final long TRANSFERINDEX; private static fina...原创 2019-11-26 17:21:47 · 197 阅读 · 0 评论 -
Java源码学习--并发集合类01--01--CopyOnWriteArrayList
CopyOnWriteArrayList 特点 线程安全的,多线程直接使用,无须加锁 通过锁+数组拷贝+volatile关键字保证了线程安全 每次数组操作,都会把数组拷贝一份出来,在新数组上进行操作,操作完成之后再赋值回去 整体步骤:对数组进行操作的时候 加锁 从原数组拷贝出新数组 在新数组上进行操作,并把新数组赋值给数组容器 1. 继承体系 代码public class Cop...原创 2019-11-26 11:28:05 · 132 阅读 · 0 评论 -
JDK并发--并发02--线程池
一、简单线程池实现 执行器, 作用:执行线程,内部存在包含真正执行任务的线程threads 其中容器出错的点,是初始化线程之后,需要让线程处于死循环中,这样才可以不断的接受来自队列中的任务,进行执行。 public class MyExecutor { private final int poolSize; private final RunnableTaskQueu...原创 2019-11-11 20:34:05 · 108 阅读 · 0 评论