Java多线程系列
Java多线程系列,主要整理自:https://www.cnblogs.com/skywang12345/p/java_threads_category.html
挖坑埋你
这个作者很懒,什么都没留下…
展开
-
Java多线程系列--“基础篇”01之 基本概念
多线程是Java中不可避免的一个重要主体。从本章开始,我们将展开对多线程的学习。接下来的内容,是对“JDK中新增JUC包”之前的Java多线程内容的讲解,涉及到的内容包括,Object类中的wait(),notify()等接口;Thread类中的接口;synchronized关键字。 注:JUC包是指,Java.util.concurrent包,它是由Java大师Doug Lea完成并在J...转载 2018-04-24 18:44:25 · 224 阅读 · 0 评论 -
Java多线程系列--“基础篇”02之 常用的实现多线程的两种方式
概要本章,我们学习“常用的实现多线程的2种方式”:Thread 和 Runnable。之所以说是常用的,是因为还可以通过java.util.concurrent包中的线程池来实现多线程。关于线程池的内容,我们以后会详细介绍;现在,先对的Thread和Runnable进行了解。本章内容包括:Thread和Runnable的简介Thread和Runnable的异同点Thread和...转载 2018-04-24 19:19:01 · 249 阅读 · 0 评论 -
Java多线程系列--“基础篇”03之 Thread中start()和run()的区别
概要Thread类包含start()和run()方法,它们的区别是什么?本章将对此作出解答。本章内容包括:start() 和 run() 的区别说明;start() 和 run() 的区别示例;start() 和 run() 相关源码(基于JDK1.7.0_40)。start() 和 run() 的区别说明start() : 它的作用是启动一个新线程,新线程会执...转载 2018-04-24 19:49:11 · 219 阅读 · 0 评论 -
Java多线程系列--“基础篇”04之 synchronized关键字
概要本章,会对`synchronized关键字进行介绍。涉及到的内容包括:synchronized 原理;synchronized 基本规则;synchronized 方法和 synchronized 代码块;实例锁 和 全局锁。synchronized原理在java中,每一个对象有且仅有一个同步锁。这也意味着,同步锁是依赖于对象而存在。当我们调用某对象的...转载 2018-04-25 10:00:39 · 186 阅读 · 0 评论 -
Java多线程系列--“基础篇”05之 线程等待与唤醒
概要本章,会对线程等待/唤醒方法进行介绍。涉及到的内容包括:wait(),notify(),notifyAll() 等方法介绍;wait() 和 notify();wait(long timeout) 和 notify();wait() 和 notifyAll();为什么 notify(),wait() 等函数定义在 Object 中,而不是 Thread 中。wa...转载 2018-04-25 11:10:00 · 181 阅读 · 0 评论 -
Java多线程系列--“基础篇”06之 线程让步
概要本章,会对Thread中的线程让步方法yield()进行介绍。涉及到的内容包括:yield()介绍;yield()示例;yield() 与 wait()的比较。yield()介绍yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权;但是,并不能保证在当前线程调用yield()之后,其它具有相...转载 2018-04-25 14:16:29 · 141 阅读 · 0 评论 -
Java多线程系列--“基础篇”07之 线程休眠
概要本章,会对Thread中sleep()方法进行介绍。涉及到的内容包括:sleep()介绍;sleep()示例;sleep() 与 wait()的比较。sleep()介绍sleep() 定义在Thread.java中。sleep() 的作用是让当前线程休眠,即当前线程会从“运行状态”进入到“休眠(阻塞)状态”。sleep()会指定休眠时间,线程休眠的时间会...转载 2018-04-25 14:35:35 · 160 阅读 · 0 评论 -
Java多线程系列--“基础篇”08之 join()
概要本章,会对Thread中join()方法进行介绍。涉及到的内容包括:join()介绍;join()源码分析(基于JDK1.7.0_40);join()示例;join() 介绍join() 定义在Thread.java中。join() 的作用:让“主线程”等待“子线程”结束之后才能继续运行。这句话可能有点晦涩,我们还是通过例子去理解:// 主线程...转载 2018-04-25 16:42:18 · 201 阅读 · 0 评论 -
Java多线程系列--“基础篇”09之 interrupt()和线程终止方式
概要本章,会对线程的interrupt()中断和终止方式进行介绍。涉及到的内容包括:interrupt()说明;终止线程的方式; 终止处于“阻塞状态”的线程;终止处于“运行状态”的线程;终止线程的示例;interrupted() 和 isInterrupted()的区别。interrupt()说明在介绍终止线程的方式之前,有必要先对interrupt()进...转载 2018-04-25 18:25:58 · 194 阅读 · 0 评论 -
Java多线程系列--“基础篇”10之 线程优先级和守护线程
概要本章,会对守护线程和线程优先级进行介绍。涉及到的内容包括:线程优先级的介绍线程优先级的示例守护线程的示例线程优先级的介绍java 中的线程优先级的范围是1~10,默认的优先级是5。“高优先级线程”会优先于“低优先级线程”执行。java 中有两种线程:用户线程和守护线程。可以通过isDaemon()方法来区别它们:如果返回false,则说明该线程是“用户线...转载 2018-04-25 18:43:00 · 159 阅读 · 0 评论 -
Java多线程系列--“基础篇”11之 生产消费者问题
概要本章,会对“生产/消费者问题”进行讨论。涉及到的内容包括:生产/消费者模型生产/消费者实现生产/消费者模型生产/消费者问题是个非常典型的多线程问题,涉及到的对象包括“生产者”、“消费者”、“仓库”和“产品”。他们之间的关系如下:生产者仅仅在仓储未满时候生产,仓满则停止生产;消费者仅仅在仓储有产品时候才能消费,仓空则等待;当消费者发现仓储没产品可消费时...转载 2018-04-25 18:54:49 · 220 阅读 · 0 评论 -
Java多线程系列--“JUC原子类”01之 框架
根据修改的数据类型,可以将JUC包中的原子操作类可以分为4类。基本类型: AtomicInteger, AtomicLong, AtomicBoolean ;数组类型: AtomicIntegerArray, AtomicLongArray, AtomicReferenceArray ;引用类型: AtomicReference, AtomicStampedRerence, Atomic...转载 2018-04-25 19:22:48 · 178 阅读 · 0 评论 -
Java多线程系列--“JUC原子类”02之 AtomicLong原子类
概要AtomicInteger,AtomicLong和AtomicBoolean这3个基本类型的原子类的原理和用法相似。本章以AtomicLong对基本类型的原子类进行介绍。内容包括:AtomicLong介绍和函数列表AtomicLong源码分析(基于JDK1.7.0_40)AtomicLong示例AtomicLong介绍和函数列表AtomicLong是作用是对...转载 2018-05-09 21:56:55 · 192 阅读 · 0 评论 -
Java多线程系列--“JUC原子类”03之 AtomicLongArray原子类
概要AtomicIntegerArray,AtomicLongArray,AtomicReferenceArray这3个数组类型的原子类的原理和用法相似。本章以AtomicLongArray对数组类型的原子类进行介绍。内容包括:AtomicLongArray介绍和函数列表AtomicLongArray源码分析(基于JDK1.7.0_40)AtomicLongArray示例...转载 2018-05-09 22:22:57 · 205 阅读 · 0 评论 -
Java多线程系列--“JUC原子类”04之 AtomicReference原子类
概要本章对AtomicReference引用类型的原子类进行介绍。内容包括:AtomicReference介绍和函数列表AtomicReference源码分析(基于JDK1.7.0_40)AtomicReference示例AtomicReference介绍和函数列表AtomicReference是作用是对”对象”进行原子操作。AtomicReference函...转载 2018-05-09 22:35:37 · 185 阅读 · 0 评论 -
Java多线程系列--“JUC原子类”05之 AtomicLongFieldUpdater原子类
概要AtomicIntegerFieldUpdater,AtomicLongFieldUpdater和AtomicReferenceFieldUpdater这3个修改类的成员的原子类型的原理和用法相似。本章以对基本类型的原子类进行介绍。内容包括:AtomicLongFieldUpdater介绍和函数列表AtomicLongFieldUpdater示例AtomicLongField...转载 2018-05-09 23:05:09 · 238 阅读 · 0 评论 -
Java多线程系列--“JUC锁”01之 框架
本章,我们介绍锁的架构;后面的章节将会对它们逐个进行分析介绍。目录如下:Java多线程系列–“JUC锁”01之 框架Java多线程系列–“JUC锁”02之 互斥锁ReentrantLockJava多线程系列–“JUC锁”03之 公平锁(一) Java多线程系列–“JUC锁”04之 公平锁(二) Java多线程系列–“JUC锁”05之 非公平锁 Java多线程系列–“JUC锁”06之...转载 2018-05-10 00:33:25 · 352 阅读 · 0 评论 -
Java多线程系列--“JUC锁”02之 互斥锁ReentrantLock
概述本章对ReentrantLock包进行基本介绍,这一章主要对ReentrantLock进行概括性的介绍,内容包括:ReentrantLock介绍ReentrantLock函数列表ReentrantLock示例在后面的两章,会分别介绍ReentrantLock的两个子类(公平锁和非公平锁)的实现原理。ReentrantLock介绍ReentrantLock...转载 2018-05-10 21:57:33 · 226 阅读 · 0 评论 -
Java多线程系列--“JUC锁”03之 公平锁(一)
概要本章对“公平锁”的获取锁机制进行介绍(本文的公平锁指的是互斥锁的公平锁),内容包括:基本概念ReentrantLock数据结构参考代码获取公平锁(基于JDK1.7.0_40) 一. tryAcquire()二. addWaiter()三. acquireQueued()四. selfInterrupt()基本概念本章,我们会讲解“线程获取公平锁”的...转载 2018-05-11 13:17:55 · 280 阅读 · 0 评论 -
Java多线程系列--“JUC锁”04之 公平锁(二)
概要前面一章,我们学习了“公平锁”获取锁的详细流程;这里,我们再来看看“公平锁”释放锁的过程。内容包括:参考代码释放公平锁(基于JDK1.7.0_40)“公平锁”的获取过程请参考“Java多线程系列–“JUC锁”03之 公平锁(一)”,锁的使用示例请参考“Java多线程系列–“JUC锁”02之 互斥锁ReentrantLock”。注意:(01) 这里是以“公平锁”来...转载 2018-05-11 16:17:17 · 212 阅读 · 0 评论 -
Java多线程系列--“JUC锁”05之 非公平锁
概要前面两章分析了”公平锁的获取和释放机制”,这一章开始对“非公平锁”的获取锁/释放锁的过程进行分析。内容包括:参考代码获取非公平锁(基于JDK1.7.0_40)释放非公平锁(基于JDK1.7.0_40)关于锁的数据结构请参考”Java多线程系列–“JUC锁”03之 公平锁(一) “,锁的使用示例请参考“Java多线程系列–“JUC锁”02之 互斥锁ReentrantLoc...转载 2018-05-11 20:40:59 · 229 阅读 · 0 评论 -
Java多线程系列--“JUC锁”06之 Condition条件
概要前面对JUC包中的锁的原理进行了介绍,本章会JUC中对与锁经常配合使用的Condition进行介绍,内容包括:Condition介绍Condition函数列表Condition示例Condition介绍Condition的作用是对锁进行更精确的控制。Condition中的await()方法相当于Object的wait()方法,Condition中的signa...转载 2018-05-12 10:57:46 · 188 阅读 · 0 评论 -
Java多线程系列--“JUC锁”07之 LockSupport
概述本章介绍JUC(java.util.concurrent)包中的LockSupport。内容包括:LockSupport介绍LockSupport函数列表LockSupport参考代码(基于JDK1.7.0_40)LockSupport示例LockSupport介绍LockSupport是用来创建锁和其他同步类的基本线程阻塞原语。 LockSuppor...转载 2018-05-12 12:13:06 · 166 阅读 · 0 评论 -
Java多线程系列--“JUC锁”08之 共享锁和ReentrantReadWriteLock
概要Java的JUC(java.util.concurrent)包中的锁包括独占锁和共享锁。在“Java多线程系列–“JUC锁”02之 互斥锁ReentrantLock ”中,对Java的独占锁进行了说明。本章对Java的共享锁进行介绍,JUC中的共享锁有CountDownLatch, CyclicBarrier, Semaphore, ReentrantReadWriteLock等;本章...转载 2018-05-12 16:09:32 · 208 阅读 · 0 评论 -
Java多线程系列--“JUC锁”09之 CountDownLatch原理和示例
概要前面对”独占锁”和”共享锁”有了个大致的了解;本章,我们对CountDownLatch进行学习。和ReadWriteLock.ReadLock一样,CountDownLatch的本质也是一个”共享锁”。本章的内容包括:CountDownLatch简介CountDownLatch数据结构CountDownLatch源码分析(基于JDK1.7.0_40)CountDownLat...转载 2018-05-12 17:21:34 · 239 阅读 · 0 评论 -
Java多线程系列--“JUC锁”10之 CyclicBarrier原理和示例
概要本章介绍JUC包中的CyclicBarrier锁。内容包括:CyclicBarrier简介CyclicBarrier数据结构CyclicBarrier源码分析(基于JDK1.7.0_40)CyclicBarrier示例CyclicBarrier简介CyclicBarrier是一个同步辅助类,允许一组线程互相等待,直到到达某个公共屏障点 (common ba...转载 2018-09-10 16:55:20 · 168 阅读 · 0 评论 -
Java多线程系列--“JUC锁”11之 Semaphore信号量的原理和示例
概要本章,我们对JUC包中的信号量Semaphore进行学习。内容包括:Semaphore 简介Semaphore 数据结构Semaphore 源码分析(基于JDK1.7.0_40)Semaphore 示例Semaphore简介Semaphore是一个计数信号量,它的本质是一个”共享锁“。信号量维护了一个信号量许可集。线程可以通过调用acquire()来获...转载 2018-09-10 17:33:26 · 201 阅读 · 0 评论 -
Java多线程系列--“JUC集合”01之 框架
概要之前,在”Java 集合系列目录(Category)”中,讲解了Java集合包中的各个类。接下来,将展开对JUC包中的集合进行学习。在学习之前,先温习一下”Java集合包”。本章内容包括:Java集合包;JUC中的集合类。Java集合包在“Java 集合系列01之 总体框架”中,介绍java集合的架构。主体内容包括Collection集合和Map类;而Coll...转载 2018-09-11 14:52:01 · 206 阅读 · 0 评论 -
Java多线程系列--“JUC集合”02之 CopyOnWriteArrayList
概要本章是”JUC系列”的CopyOnWriteArrayList篇。接下来,会先对CopyOnWriteArrayList进行基本介绍,然后再说明它的原理,接着通过代码去分析,最后通过示例更进一步的了解CopyOnWriteArrayList。内容包括:CopyOnWriteArrayList介绍;CopyOnWriteArrayList原理和数据结构;CopyOnWriteA...转载 2018-09-11 15:25:15 · 217 阅读 · 0 评论 -
Java多线程系列--“JUC集合”03之 CopyOnWriteArraySet
概要本章是JUC系列中的CopyOnWriteArraySet篇。接下来,会先对CopyOnWriteArraySet进行基本介绍,然后再说明它的原理,接着通过代码去分析,最后通过示例更进一步的了解CopyOnWriteArraySet。内容包括:CopyOnWriteArraySet介绍;CopyOnWriteArraySet原理和数据结构;CopyOnWriteArraySe...转载 2018-09-11 16:19:39 · 220 阅读 · 0 评论