“全栈2019”53篇Java多线程学习资料及总结

难度

初级

学习时间

10分钟

适合人群

零基础

开发语言

Java

开发环境

  • JDK v11
  • IntelliJIDEA v2018.3

友情提示

  • 本教学属于系列教学,内容具有连贯性,本章使用到的内容之前教学中都有详细讲解。
  • 本章内容针对零基础或基础较差的同学比较友好,可能对于有基础的同学来说很简单,希望大家可以根据自己的实际情况选择继续看完或等待看下一篇文章。谢谢大家的谅解!

《“全栈2019”Java多线程》学习资料目录

《“全栈2019”Java多线程第一章:认识多线程》

《“全栈2019”Java多线程第二章:创建多线程之继承Thread类》

《“全栈2019”Java多线程第三章:创建多线程之实现Runnable接口》

《“全栈2019”Java多线程第四章:设置和获取线程名称》

《“全栈2019”Java多线程第五章:线程睡眠sleep()方法详解》

《“全栈2019”Java多线程第六章:中断线程interrupt()方法详解》

《“全栈2019”Java多线程第七章:等待线程死亡join()方法详解》

《“全栈2019”Java多线程第八章:放弃执行权yield()方法详解》

《“全栈2019”Java多线程第九章:判断线程是否存活isAlive()详解》

《“全栈2019”Java多线程第十章:Thread.State线程状态详解》

《“全栈2019”Java多线程第十一章:线程优先级详解》

《“全栈2019”Java多线程第十二章:后台线程setDaemon()方法详解》

《“全栈2019”Java多线程第十三章:线程组ThreadGroup详解》

《“全栈2019”Java多线程第十四章:线程与堆栈详解》

《“全栈2019”Java多线程第十五章:当后台线程遇到finally》

《“全栈2019”Java多线程第十六章:同步synchronized关键字详解》

《“全栈2019”Java多线程第十七章:同步锁详解》

《“全栈2019”Java多线程第十八章:同步代码块双重判断详解》

《“全栈2019”Java多线程第十九章:死锁详解》

《“全栈2019”Java多线程第二十章:同步方法产生死锁的例子》

《“全栈2019”Java多线程第二十一章:同步代码块产生死锁的例子》

《“全栈2019”Java多线程第二十二章:饥饿线程(Starvation)详解》

《“全栈2019”Java多线程第二十三章:活锁(Livelock)详解》

《“全栈2019”Java多线程第二十四章:等待唤醒机制详解》

《“全栈2019”Java多线程第二十五章:生产者与消费者线程详解》

《“全栈2019”Java多线程第二十六章:同步方法生产者与消费者线程》

《“全栈2019”Java多线程第二十七章:Lock获取lock/释放unlock锁》

《“全栈2019”Java多线程第二十八章:公平锁与非公平锁详解》

《“全栈2019”Java多线程第二十九章:可重入锁与不可重入锁详解》

《“全栈2019”Java多线程第三十章:尝试获取锁tryLock()方法详解》

《“全栈2019”Java多线程第三十一章:中断正在等待显式锁的线程》

《“全栈2019”Java多线程第三十二章:显式锁Lock等待唤醒机制详解》

《“全栈2019”Java多线程第三十三章:await与signal/signalAll》

《“全栈2019”Java多线程第三十四章:超时自动唤醒被等待的线程》

《“全栈2019”Java多线程第三十五章:如何获取线程被等待的时间?》

《“全栈2019”Java多线程第三十六章:如何设置线程的等待截止时间》

《“全栈2019”Java多线程第三十七章:如何让等待的线程无法被中断》

《“全栈2019”Java多线程第三十八章:从零手写一个线程安全缓冲区》

《“全栈2019”Java多线程第三十九章:显式锁实现生产者消费者模型》

《“全栈2019”Java多线程第四十章:ReadWriteLock读写锁》

《“全栈2019”Java多线程第四十一章:读锁与写锁之间相互嵌套例子》

《“全栈2019”Java多线程第四十二章:获取线程与读写锁的保持数》

《“全栈2019”Java多线程第四十三章:查询是否有线程在等待读写锁》

《“全栈2019”Java多线程第四十四章:读锁不支持Condition》

《“全栈2019”Java多线程第四十五章:查询Condition上的等待线程》

《“全栈2019”Java多线程第四十六章:判断任意线程是否已持有写锁》

《“全栈2019”Java多线程第四十七章:判断锁是否为公平锁isFair()》

《“全栈2019”Java多线程第四十八章:读写锁实战高并发容器》

《“全栈2019”Java多线程第四十九章:LockSupport简单介绍》

《“全栈2019”Java多线程第五十章:设置/获取LockSupport同步对象》

《“全栈2019”Java多线程第五十一章:LockSupport线程等待时间》

《“全栈2019”Java多线程第五十二章:LockSupport等待截止时间》

《“全栈2019”Java多线程第五十三章:ThreadLocal简单介绍》

温馨提示

如果只是看《“全栈2019”Java多线程》系列的全部文章链接的话,请大家只看上面的目录部分。

下面的内容介绍部分就是每篇文章的主要知识点汇总,方便大家查阅。

《“全栈2019”Java多线程》内容介绍

《“全栈2019”Java多线程第一章:认识多线程》一章中介绍了什么是线程。

《“全栈2019”Java多线程第二章:创建多线程之继承Thread类》一章中介绍了创建多线程方式之继承Thread。

《“全栈2019”Java多线程第三章:创建多线程之实现Runnable接口》一章中介绍了创建多线程方式之实现Runnable接口。

《“全栈2019”Java多线程第四章:设置和获取线程名称》一章中介绍了如何获取线程名称。

《“全栈2019”Java多线程第五章:线程睡眠sleep()方法详解》一章中介绍了如何暂时停止执行线程。

《“全栈2019”Java多线程第六章:中断线程interrupt()方法详解》一章中介绍了如何停止线程。

《“全栈2019”Java多线程第七章:等待线程死亡join()方法详解》一章中介绍了如何让一个线程等待另一个线程执行完毕再执行

《“全栈2019”Java多线程第八章:放弃执行权yield()方法详解》一章中介绍了如何让一个线程放弃执行权。

《“全栈2019”Java多线程第九章:判断线程是否存活isAlive()详解》一章中介绍了如何判断一个线程是否存活

《“全栈2019”Java多线程第十章:Thread.State线程状态详解》一章中介绍了线程的6种状态

《“全栈2019”Java多线程第十一章:线程优先级详解》一章中介绍了如何设置/获取线程的优先级

《“全栈2019”Java多线程第十二章:后台线程setDaemon()方法详解》一章中介绍了如何将一个线程设置为后台线程

《“全栈2019”Java多线程第十三章:线程组ThreadGroup详解》一章中介绍了线程组ThreadGroup

《“全栈2019”Java多线程第十四章:线程与堆栈详解》一章中介绍了线程与堆栈信息之间的关系

《“全栈2019”Java多线程第十五章:当后台线程遇到finally》一章中介绍了当后台线程遇到finally时,finally代码块不会被执行的情况

《“全栈2019”Java多线程第十六章:同步synchronized关键字详解》一章中介绍了synchronized关键字

《“全栈2019”Java多线程第十七章:同步锁详解》一章中介绍了同步代码块/方法中的同步锁

《“全栈2019”Java多线程第十八章:同步代码块双重判断详解》一章中介绍了同步代码块中的双重判断

《“全栈2019”Java多线程第十九章:死锁详解》一章中介绍了死锁

《“全栈2019”Java多线程第二十章:同步方法产生死锁的例子》一章中介绍了同步方法产生死锁的例子

《“全栈2019”Java多线程第二十一章:同步代码块产生死锁的例子》一章中介绍了同步代码块产生死锁的例子

《“全栈2019”Java多线程第二十二章:饥饿线程(Starvation)详解》一章中介绍了饥饿线程(Starvation)

《“全栈2019”Java多线程第二十三章:活锁(Livelock)详解》一章中介绍了活锁(Livelock)

《“全栈2019”Java多线程第二十四章:等待唤醒机制详解》一章中介绍了等待唤醒机制

《“全栈2019”Java多线程第二十五章:生产者与消费者线程详解》一章中介绍了生产者与消费者线程

《“全栈2019”Java多线程第二十六章:同步方法生产者与消费者线程》一章中介绍了用同步方法来实现生产者与消费者线程例子

《“全栈2019”Java多线程第二十七章:Lock获取lock/释放unlock锁》一章中介绍了Lock获取lock/释放unlock锁。

《“全栈2019”Java多线程第二十八章:公平锁与非公平锁详解》一章中介绍了公平锁与非公平锁

《“全栈2019”Java多线程第二十九章:可重入锁与不可重入锁详解》一章中介绍了可重入锁与不可重入锁

《“全栈2019”Java多线程第三十章:尝试获取锁tryLock()方法详解》一章中介绍了Lock尝试获取锁tryLock()方法

《“全栈2019”Java多线程第三十一章:中断正在等待显式锁的线程》一章中介绍了显式锁Lock中的lockInterruptibly()方法:在如果当前线程没被中断,则一直获取锁。

《“全栈2019”Java多线程第三十二章:显式锁Lock等待唤醒机制详解》一章中介绍了显式锁Lock的等待唤醒机制。

《“全栈2019”Java多线程第三十三章:await与signal/signalAll》一章中介绍了Condition对象的await()方法与signal()/signalAll()方法

《“全栈2019”Java多线程第三十四章:超时自动唤醒被等待的线程》一章中介绍了Condition对象的await​(long time, TimeUnit unit)方法

《“全栈2019”Java多线程第三十五章:如何获取线程被等待的时间?》一章中介绍了Condition对象的awaitNanos​(long nanosTimeout)方法

《“全栈2019”Java多线程第三十六章:如何设置线程的等待截止时间》一章中介绍了Condition对象的awaitUntil​(Date deadline)方法

《“全栈2019”Java多线程第三十七章:如何让等待的线程无法被中断》一章中介绍了Condition对象的awaitUninterruptibly()方法

《“全栈2019”Java多线程第三十八章:从零手写一个线程安全缓冲区》一章中介绍了Lock与Condition实战项目:从零手写一个线程安全缓冲区

《“全栈2019”Java多线程第三十九章:显式锁实现生产者消费者模型》一章中介绍了用显式锁Lock与Condition对象来实现生产者与消费者模型

《“全栈2019”Java多线程第四十章:ReadWriteLock读写锁》一章中介绍了读写锁ReadWriteLock

《“全栈2019”Java多线程第四十一章:读锁与写锁之间相互嵌套例子》一章中介绍了读锁与写锁之间相互嵌套情况

《“全栈2019”Java多线程第四十二章:获取线程与读写锁的保持数》一章中介绍了可重入读写锁ReentrantReadWriteLock的获取线程与读写锁保持数系列方法

《“全栈2019”Java多线程第四十三章:查询是否有线程在等待读写锁》一章中介绍了可重入读写锁ReentrantReadWriteLock的查询是否有线程正在等待获取读写锁hasQueuedThreads()方法、获取有多少个正在等待获取读写锁的线程getQueueLength()方法和查询指定线程是否正在等待获取读写锁的hasQueuedThread(Thread thread)方法。

《“全栈2019”Java多线程第四十四章:读锁不支持Condition》一章中介绍了可重入读写锁ReentrantReadWriteLock与Condition的关系,在读写锁中,写锁是支持Condition的,读锁是不支持Condition的,原因在于写锁在某一时刻最多只能被一个线程拥有,而读锁在某一时刻最多可以被多个线程拥有,对于读锁而言,其他线程没有必要等待获取读锁,等待唤醒是毫无意义的。

《“全栈2019”Java多线程第四十五章:查询Condition上的等待线程》一章中介绍了如何查询Condition上是否有线程正在等待和有多少线程正在等待。用锁的hasWaiters​(Condition condition)方法查询Condition上是否有线程正在等待,再用getWaitQueueLength​(Condition condition)方法获取Condition上等待的线程的个数。

《“全栈2019”Java多线程第四十六章:判断任意线程是否已持有写锁》一章中介绍了如何判断任意线程是否已持有写锁。通过ReentrantReadWriteLock的isWriteLocked()方法来判断写锁是否已被任意线程持有。

《“全栈2019”Java多线程第四十七章:判断锁是否为公平锁isFair()》一章中介绍了如何判断锁是否为公平锁isFair()方法。

《“全栈2019”Java多线程第四十八章:读写锁实战高并发容器》一章中介绍了如何使用读写锁实战简易版高并发容器。

《“全栈2019”Java多线程第四十九章:LockSupport简单介绍》一章中介绍了LockSupport的阻塞线程park()方法和唤醒线程unpark()方法

《“全栈2019”Java多线程第五十章:设置/获取LockSupport同步对象》一章中介绍了LockSupport的设置同步对象park​(Object blocker)方法和获取同步对象getBlocker​(Thread t)方法

《“全栈2019”Java多线程第五十一章:LockSupport线程等待时间》一章中介绍了LockSupport的超时自动唤醒阻塞线程parkNanos​(long nanos)方法和可设置同步对象的超时自动唤醒阻塞线程parkNanos​(Object blocker, long nanos)方法

《“全栈2019”Java多线程第五十二章:LockSupport等待截止时间》一章中介绍了LockSupport的超过截止时间时自动唤醒阻塞线程parkUntil​(long deadline)方法和可设置同步对象的超过截止时间时自动唤醒阻塞线程parkUntil​(Object blocker, long deadline)方法

《“全栈2019”Java多线程第五十三章:ThreadLocal简单介绍》一章中介绍了线程本地变量ThreadLocal

GitHub

本章程序GitHub地址:https://github.com/gorhaf/Java2019/tree/master/Thread

学习小组

加入同步学习小组,共同交流与进步。

  • 方式一:关注头条号Gorhaf,私信“Java学习小组”。
  • 方式二:关注公众号Gorhaf,回复“Java学习小组”。

全栈工程师学习计划

关注我们,加入“全栈工程师学习计划”。

版权声明

原创不易,未经允许不得转载!

了解更多
举报
评论 0