简介 Condition 将 Object 监视器方法(wait、notify 和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意 Lock 实现组合使用,为每个对象提供多个等待 set(wait-s…
分类:JUC
Jdk1.7 JUC源码增量解析(4)-ForkJoin-ForkJoin任务的fork/join过程
Jdk1.7 JUC源码增量解析(4)-ForkJoin-ForkJoin任务的fork/join过程 作者:大飞 概述: 这篇通过分析一个ForkJoin任务的执行过程来分析ForkJoin的相关代码,主…
Java JUC(Atomic包)
基本类:AtomicInteger、AtomicLong、AtomicBoolean; 引用类型:AtomicReference、AtomicReference的ABA实例、AtomicStampedRerence、At…
juc - CountDownLatch源码解读
之前再学zk的时候,用到了这个CountDownLatch,他的作用是等其他的线程都执行完了某个操作之后再让当前的线程执行,在其他线程没有执行完之前当前线程要阻塞,这样就能实现线程之间的通信了。因为最近刚学习了Reent…
【Java并发编程实战】-----“J.U.C”:ReentrantLock之三unlock方法分析
前篇博客LZ已经分析了ReentrantLock的lock()实现过程,我们了解到lock实现机制有公平锁和非公平锁,两者的主要区别在于公平锁要按照CLH队列等待获取锁,而非公平锁无视CLH队列直接获取锁。但是对于unl…
Java并发
编程问题中相当大的一部分都可以通过使用顺序编程来解决。 对于某些问题,如果能够并行地执行程序中的多个部分,则会变得非常方便。 并行编程可以使程序执行速度得到极大地提高。 当并行执行的任务彼此开始产生互相干涉时,实际的并发…
JUC学习笔记 -- (5) 线程创建的第三种方式Callable
创建线程的两种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这两种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到…
JUC源码分析(四)-CountDownLatch源码分析
背景介绍 源码分析 CountDownLatch.await() CountDownLatch.countDown() ReentrantLock与CountDownLatch语义分析 ReentrantLock Cou…
JUC之Atomic系列12大类实例讲解和原理分解
在java6以后我们不但接触到了Lock相关的锁,也接触到了很多更加乐观的原子修改操作,也就是在修改时我们只需要保证它的那个瞬间是安全的即可,经过相应的包装后可以再处理对象的并发修改,以及并发中的ABA问题,本文讲述At…
Jdk1.7 JUC源码增量解析(3)-ForkJoin-非ForkJoin任务的执行过程
Jdk1.7 JUC源码增量解析(3)-ForkJoin-非ForkJoin任务的执行过程 作者:大飞 概述: 这篇通过分析一个非ForkJoin(Runnable或者Callable)任务的执行过程来分析…
JUC-5.创建执行线程的方式
1. 创建执行线程的方式 创建执行线程一共有4种方式。分别是继承Thread、实现接口Runnable接口、实现Callable接口、线程池。 1.1 继承Thread 继承Thread并重写父类run()方法,通过st…
Java多线程:可重入锁RentrantLock,Java多线程系列--“JUC锁”02之 互斥锁ReentrantLock
前言 Java中通过synchronized关键字来进行同步,实现对竞争资源的互斥访问的锁。Java 1.0版本中就已经支持同步锁了。 同步锁的原理是,对于每一个对象,有且仅有一个同步锁;不同的线程能共同访问该同…