这一节我们将探讨引用类型原子类:AtomicReference, AtomicStampedRerence, AtomicMarkableReference。AtomicReference的使用非常简单,根据API我们就…
分类:java并发
java并发编程(十四)----(JUC原子类)对象的属性修改类型介绍
今天我们介绍原子类的最后一个类型—-对象的属性修改类型: AtomicIntegerFieldUpdater,AtomicLongFieldUpdater,AtomicReferenceFieldUpdater。有了这几…
java并发编程(二十)----(JUC集合)CopyOnWriteArrayList介绍
这一节开始我们正式来介绍JUC集合类。我们按照List、Set、Map、Queue的顺序来进行介绍。这一节我们来看一下CopyOnWriteArrayList。 CopyOnWriteArrayList介绍 CopyOn…
java并发编程(二十四)----(JUC集合)ArrayBlockingQueue和LinkedBlockingQueue介绍
这一节我们来了解阻塞队列(BlockingQueue),BlockingQueue接口定义了一种阻塞的FIFO queue,每一个BlockingQueue都有一个容量,当容量满时往BlockingQueue中添加数据时…
JUC 之ThreadPoolExecutor实现原理分析
ThreadPoolExecutor工作流程 JDK1.5中引入了线程池,合理地利用线程池能有效的提高程序的运行效率,但不当的使用线程池也会带来致命的危害。作为使用最多的ThreadPoolExecutor,很有必要深入…
JUC学习笔记 -- (1)Volatile和内存可见性
一、内存可见性 可见性:一个线程对共享变量值的修改,能够及时地被其他线程看到。 共享变量:如果一个变量在多个线程的工作内存中都存在副本,那么这个变量就是这几个线程的共享变量。 Java内存模型(JMM) Java内存模型…
JUC学习笔记 -- (2)并发编程的3个概念 ,原子性,可见性,有序性!
并发编程中的三条性质:原子性,可见性,有序性 1.原子性 原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。即整体不可分割。 在Java中,对基本数据类型(例外就是long和d…
JUC学习笔记 -- (3)同步容器类和并发容器类
一、同步容器类 包括Vector(实现了一个动态数组,和ArrayList相似,但两者是不同的)和Hashtable。 同步容器类的问题: 例如:Vector的getLast方法,和deleteLast方法,都会执行“先…
JUC学习笔记 -- (4) CountDownLatch闭锁
CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现…
JUC学习笔记 -- (5) 线程创建的第三种方式Callable
创建线程的两种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这两种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到…
JUC学习笔记 -- (6) Lock锁初探
首先我们来回忆一下上一节讲过的synchronized关键字,该关键字用于给代码段或方法加锁,使得某一时刻它修饰的方法或代码段只能被一个线程访问。那么试想,当我们遇到这样的情况:当synchronized修饰的方法或代码…
JUC学习笔记 -- (8) 多线程并发之生产者消费者模式的两种实现
生产者消费者模式是并发、多线程编程中经典的设计模式,生产者和消费者通过分离的执行工作解耦,简化了开发模式,生产者和消费者可以以不同的速度生产和消费数据。 真实世界中的生产者消费者模式 生产者和消费者模式在生…