本文主要讲解Java中线程的状态。Java中线程的状态和操作系统中线程的状态有所不同。 目录 线程的生命周期 线程的状态 线程的生命周期 此图是根据自己的了解画的,如果有不足或错误欢迎指正。 线程的状态 Java中线程有…
分类:java并发
Java并发编程札记-(一)基础-05线程安全问题
在多线程编程中,可能会出现多个线程访问一个资源的情况,资源可以是同一内存区(变量,数组,或对象)、系统(数据库,web services等)或文件等等。如果不对这样的访问做控制,就可能出现不可预知的结果。这就是线程安全问…
Java并发编程札记-(一)基础-06synchronized详解
在Java并发编程札记-(一)基础-05线程安全问题一文中已经学习了什么是线程安全以及实现线程安全的方法。今天就来学习下其中的一种方法——隐式锁synchronized。 Java中每个对象都有且只有一个内置锁。通过sy…
Java并发编程札记-(一)基础-07volatile详解
volatile同synchronized一样,是Java中实现线程安全的一种机制。与synchronized相比,特点是使用简单、性能高,但容易出错、使用范围有限。 《Java语言规范(第三版)》中讲到: Java允许…
Java并发编程札记-(二)JUC概述
从今天开始学习JUC。JUC是java.util.concurrent包的简称。下图是JUC的整体结构。 atomic 以下是JUC中的原子类。 locks 以下是JUC中的锁,也称显示锁。 collections 以下…
Java并发编程札记-(三)JUC原子类-02原子方式更新单个变量
今天学习AtomicBoolean、AtomicInteger、AtomicLong、AtomicReference,这几个类的共同特点是都提供单个变量的原子方式访问和更新功能。下面以AtomicLong为代表,对这些类…
Java并发编程札记-(三)JUC原子类-01概述
今天来学习JUC原子类。JUC原子类位于java.util.concurrent.atomic包下,支持在单个变量上解除锁的线程安全编程。 参考JDK1.8的java.util.concurrent.atomic包,画出…
Java并发编程札记-(三)JUC原子类-03原子方式更新数组
今天学习AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray,这几个类的共同特点是都提供数组的原子方式访问和更新功能。下面以AtomicLongArray为代表,…
Java并发编程札记-(三)JUC原子类-05原子方式更新类的指定volatile字段
AtomicReferenceFieldUpdater、AtomicIntegerFieldUpdater和AtomicLongFieldUpdater是基于反射的实用工具,可以提供对关联字段类型的访问。例如Atomic…
Java并发编程札记-(三)JUC原子类-04原子方式更新引用
An object reference that may be updated atomically. The AtomicReference class provides reference objects that …
Java并发编程札记-(三)JUC原子类-06JDK1.8新增:LongAdder、DoubleAdder、LongAccumulator、DoubleAccumulator
DoubleAccumulator、LongAccumulator、DoubleAdder、LongAdder是JDK1.8新增的部分,是对AtomicLong等类的改进。比如LongAccumulator与LongAd…
Java并发编程札记-(三)JUC原子类-07CAS
CAS,即compare and swap,比较并交换。CAS操作包含三个操作数:内存值(V),预期值(A)、新值(B)。如果内存值与预期值相同,就将内存值修改为新值,否则不做任何操作。 java.util.concur…