FutureTask源码解析(1)——预备知识

2018-09-28
阅读 6 分钟
5.4k
FutureTask 是一个同步工具类,它实现了Future语义,表示了一种抽象的可生成结果的计算。在包括线程池在内的许多工具类中都会用到,弄懂它的实现将有利于我们更加深入地理解Java异步操作实现。

线程间的同步与通信(8)——Semaphore源码分析

2018-09-27
阅读 9 分钟
4.8k
Semaphore(信号量)也是常用的并发工具之一,它常常用于流量控制。通常情况下,公共的资源常常是有限的,例如数据库的连接数。使用Semaphore可以帮助我们有效的管理这些有限资源的使用。

线程间的同步与通信(7)——CyclicBarrier源码分析

2018-09-26
阅读 10 分钟
4.8k
在CountDownLatch中,执行countDown方法的线程和执行await方法的线程不是一类线程。例如,线程M,N需要等待线程A,B,C,D,E执行完成后才能继续往下执行,则线程A,B,C,D,E执行完成后都将调用countDown方法,使得最后count变为了0,最后一个将count值减为0的线程调用的tryReleaseShared方法会成功返回true,从而调用doReleas...

Thread类源码解读(3)——线程中断interrupt

2018-08-20
阅读 11 分钟
8.8k
前言 系列文章目录 线程中断是一个很重要的概念,通常,取消一个任务的执行,最好的,同时也是最合理的方法,就是通过中断。 本篇我们主要还是通过源码分析来看看中断的概念。 本文的源码基于JDK1.8 Interrupt status & InterruptedException java线程的中断机制为我们提供了一个契机,使被中断的线程能够有机会从当...

Thread类源码解读(2)——线程状态及常用方法

2018-08-17
阅读 15 分钟
6.6k
前言 系列文章目录 上一篇我们讨论了线程的创建,本篇我们来聊一聊线程的状态转换以及常用的几个比较重要的方法。 本篇依然是通过源码分析来了解这些知识。 本文源码基于jdk1.8 。 阅读完本文,你应当有能力回答以下常见面试题: 线程有哪几种状态以及各种状态之间的转换? Thread.sleep() 与 Thread.currentThread().sl...

Thread类源码解读(1)——如何创建和启动线程

2018-08-16
阅读 9 分钟
7k
谈到线程同步与通信,线程本身的概念是绕不开的,而进程和线程的概念已经是老生常谈的话题了,一些基本的概念本文就不再讨论了,本篇仅仅致力于通过源码,了解线程的构造与启动,从而更深入的了解线程。