Java并发
gyhdxFeng
这个作者很懒,什么都没留下…
展开
-
【Java并发】- 11.对Java提供的ThreadPoolExecutor线程池的深入刨析及相关实现源码的解析
文章目录1 线程池提交任务的源码分析1.1 submit(Callable task)方法1.2 submit(Runnable task)方法和submit(Runnable task, T result)方法1.3 线程池的状态分析(为了更好的理解execute先讲这个)线程池中的5种状态线程池中状态的转移1.4 execute(Runnable command) 方法1.5 线程池添加线程的方法addWorker1.6 runWorker(this):真正执行任务的方法getTask():获取阻塞队列原创 2020-06-24 12:25:00 · 166 阅读 · 0 评论 -
【Java并发】- 10.对ThreadPoolExecutor线程池的简单解析及创建线程池的参数的分析
文章目录1 从Executors开始讲起2.对ThreadPoolExecutor的分析2.1 BlockingQueue workQueue阻塞队列LinkedBlockingQueue:基于链表的阻塞队列ArrayBlockingQueue:基于数组的阻塞队列SynchronousQueue:同步阻塞队列2.2 ThreadFactory threadFactory:线程工厂DefaultThreadFactory:默认线程工厂,使用最多的线程工厂2.3 RejectedExecutionHandler原创 2020-06-23 11:16:26 · 411 阅读 · 0 评论 -
【Java并发】- 9.对AQS(AbstractQueuedSynchronizer)解析
文章目录1.简介2.通过可重入锁(ReentrantLock)来探究AQS的实现原理2.1 对构造方法的解析2.2 对lock()方法的解析2.2.1 公平锁时2.2.2 非公平锁2.3 unLock方法2.4 对ReentrantLock的总结3.根据可重入读写锁(ReentrantReadWriteLock)来探究AQS的源码3.1 构造方法的分析3.2 对读锁的分析3.2.1 lock方法源码分析3.2.2 释放锁unLock3.3 对写锁的分析3.3.1 lock方法3.3.2 unlock方法3.原创 2020-06-22 21:55:06 · 220 阅读 · 0 评论 -
【Java并发】- 8.对并发工具类ThreadLocal的源码解析
文章目录1.简介2.ThreadLocal的使用3.对ThreadLocal的主要方法的源码解析ThreadLocalMapset方法get方法4.ThreadLocal中的内存泄漏问题1.简介ThreadLocal是一个关于创建线程局部变量的类。通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。而使用ThreadLocal创建的变量只能被当前线程访问,其他线程则无法访问和修改。本质上,ThreadLocal是通过空间来换取时间,从而实现每个线程当中都会有一个变量的副本,这样每个线程就都会原创 2020-06-22 12:32:19 · 221 阅读 · 1 评论 -
【Java并发】- 7.对CAS(Compare And Swap)解析
文章目录1 CAS概念2 CAS底层原理3 Java中对CAS操作的实现CAS源码分析4 CAS的缺陷循环时间太长只能保证一个共享变量原子操作ABA问题Java中对ABA问题的解决3 synchronized锁这对CAS的使用1 CAS概念CAS (compareAndSwap),中文叫比较交换,一种无锁原子算法。过程是这样:它包含 3 个参数 CAS(V,E,N),V表示要更新变量的值,E表示预期值,N表示新值。仅当 V值等于E值时,才会将V的值设为N,如果V值和E值不同,则说明已经有其他线程做两个更原创 2020-06-20 14:20:52 · 280 阅读 · 0 评论 -
【Java并发】- 6.对并发工具类CyclicBarrier的源码解析
文章目录1.CyclicBarrier类的简介2.对CyclicBarier源码的分析对构造方法的解析对await()方法的解析dowait()方法关于CyclicBarrier的底层执行流程总结3.CyclicBarrier和CountDownLatch的区别1.CyclicBarrier类的简介CyclicBarrier默认的构造方法是CyclicBarrier(int parties),其参数表示屏障拦截的线程数量,每个线程调用await方法告诉CyclicBarrier我已经到达了屏障,然后当前原创 2020-06-20 13:18:21 · 204 阅读 · 0 评论 -
【Java并发】- 5.对并发工具类CountDownLatch的源码解析
文章目录1.简介2.如何使用CountDownLatch3.对CountDownLatch类中方法的解析构造方法await方法1.简介CountDownLatch允许一个或多个线程等待其他线程完成操作。与thread的join方法的实现的功能相似,不过join用于让当前执行线程等待join线程执行结束。其实现原理是不停检查join线程是否存活,如果join线程存活则让当前线程永远等待。与join不同CountDownLatch可以让开发者自行定义线程执行的位置。CountDownLatch的构造函数原创 2020-06-20 11:48:41 · 231 阅读 · 0 评论 -
【Java并发】- 3.对Volatile关键字的深入解析
文章目录原创 2020-06-18 23:57:24 · 179 阅读 · 0 评论 -
【Java并发】- 4.对Lock接口及其关联接口Condition的解析
文章目录1.对Lock类的简单解析void lock();void lockInterruptibly()boolean tryLock();boolean tryLock(long time, TimeUnit unit)1.对Lock类的简单解析lock接口是java1.5开始添加入Java的,它是一个接口。其作用是替代synchronized关键字实现线程安全。synchronized关键字实现线程安全是通过JVM底层的Monitor锁来实现,但是在多线程环境下,如果线程进入阻塞状态就会涉及系统原创 2020-06-17 23:30:53 · 242 阅读 · 3 评论 -
【Java并发】- 2.对Synchronized关键字的深入解析
文章目录1.概念2.synchronized的用法1、同步方法2、同步代码块根据获取的锁分类3.通过字节码来查看synchronized关键字的具体实现方式修饰代码块修饰非静态方法修饰静态方法1.概念是利用锁的机制来实现同步的。锁机制有如下两种特性:互斥性:**即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制,这样在同一时间只有一个线程对需同步的代码块(复合操作)进行访问。互斥性我们也往往称为操作的原子性。可见性:**必须确保在锁被释放之前,对共享变量所做的修原创 2020-06-16 18:11:11 · 295 阅读 · 1 评论 -
【Java并发】- 1.对Object类中wait和notify方法的解析
文章目录1.对wait方法的解析wait方法在何时使用?线程执行wait方法后何时被唤醒?2.对notify方法的解析3.练习:启动两个线程使用wait和notify使线程对x分别加一减一。最后输出10101010...1.对wait方法的解析Object类中有三个wait方法 public final void wait() throws InterruptedException { wait(0); } public final native voi原创 2020-06-15 14:53:05 · 296 阅读 · 0 评论 -
【Java并发系列】--Java内存模型
Java内存模型1 基本概念程序:代码,完成某一个任务的代码序列(静态概念)进程:程序在某些数据上的一次运行(动态)线程:一个进程有一个或多个线程组成(占有资源的独立单元)2 JVM与线程jvm启动时期类被调用: JVM线程启动——> 启动其他线程(main)3 jvm内存区域(运行时数据区)Java虚拟机会在程序运行时将内存自动划分为以上几个区域,每个区域都有其作用及...原创 2019-09-14 18:12:21 · 155 阅读 · 0 评论