java线程
文章平均质量分 93
说好不能打脸
我没想过赢,我只是不想输
展开
-
CompletableFuture任务流水线工具
CompletableFuture是JDK8+开始,自携带的一款并发控制工具,这个工具可以支持设计人员自定义编排多个任务间的执行关系和执行顺序。为了降低多任务编排的开发门槛,减少代码维护工作量,Java为这种需要编排多个任务执行关系、执行顺序的场景准备了CompletableFuture并发控制工具,所以CompletableFuture工具也可以称为任务流水线控制工具。原创 2024-07-21 20:49:55 · 796 阅读 · 0 评论 -
线程基础:多任务处理(16)——Fork/Join框架(排序算法性能补充)
本篇文章从单线程快速排序到多线程归并排序、再到多线程桶排序的方式,依次分析它的执行性能。本篇文章并不侧重于算法详细过程的讲解,关于快速排序、桶排序、归并排序等排序算法的详细过程请读者参见其它专门介绍算法过程的资料,当然本文还是会讲解这些排序算法的大致过程。原创 2017-06-06 14:57:26 · 4690 阅读 · 2 评论 -
线程进阶:多任务处理(17)——Java中的锁(Unsafe基础)
本专题在之前的文章中详细介绍了Java中最常使用的一种锁机制——同步锁。但是同步锁肯定是不适合在所有应用场景中使用的。所以从本文开始,笔者将试图通过两到三篇文章的篇幅向读者介绍Java中锁的分类、原理和底层实现。以便大家在实际工作中根据应用场景进行使用。本篇文章我们先介绍Java中关于锁的底层实现的基础类sun.misc.Unsafe。原创 2017-06-14 18:41:06 · 19159 阅读 · 20 评论 -
线程基础:多任务处理(18)——MESI协议以及带来的问题:伪共享
本文和后续文章将着眼CPU的工作原理阐述伪共享的解决方法和volatile关键字的应用。原创 2018-10-23 15:35:15 · 4009 阅读 · 1 评论 -
线程基础:多任务处理(18)——MESI协议以及带来的问题:volatile关键字
本文和后续文章将着眼CPU的工作原理阐述伪共享的解决方法和volatile关键字的应用。原创 2018-11-07 20:54:39 · 2062 阅读 · 3 评论 -
JVM调试常用命令——jstack命令与Java线程栈(1)
jstack命令的主要作用是打印指定Java进程中每一个线程的工作状态,以及每个线程栈当前的方法执行顺序等详细情况。为什么jstack命令不和jmap、jinfo、jstat等命令一同讲解,而要单独成文呢?因为通过jstack命令给出的线程栈详细情况,可以有助我们与我们反向理解JVM 栈的内部结构。原创 2018-11-25 18:52:00 · 3947 阅读 · 0 评论 -
JVM调试常用命令——jstack命令与Java线程栈(2)
本片文章中我们将结合之前讲过的线程状态切换,对jstack命令的结果进行讲解。原创 2018-12-02 22:00:47 · 3581 阅读 · 2 评论 -
JVM调试常用命令——jstack命令与线程状态(3)
本片文章中我们将结合之前讲过的线程状态切换,对jstack命令的结果进行讲解。原创 2018-12-04 22:58:02 · 3945 阅读 · 2 评论 -
JVM调试常用命令——jstack命令与线程状态(4)
本片文章中我们将结合之前讲过的线程状态切换,对jstack命令的结果进行讲解。原创 2018-12-09 11:35:40 · 2992 阅读 · 0 评论 -
Java并发基石——所谓“阻塞”:Object Monitor和AQS(1)
通过上文的介绍我们知道就算是“阻塞”状态,根据进入阻塞状态的方式不同,阻塞状态也会有细微的差异。这样的差异基本上分成两种大的类型:Object Monitor和Parking。在本文和后续的几篇文章中,我们将对它们进行详细介绍。我们将首先介绍基于Object Monitor原理的悲观锁实现,然后再讨论基于AQS队列同步器框架。原创 2018-12-24 21:38:43 · 13752 阅读 · 36 评论 -
Java并发基石——所谓“阻塞”:Object Monitor和AQS(2)
上文我们较为详细的介绍了Java线程调度中的Object Monitor机制以及其工作情况,本文我们开始介绍Java线程调度中的另一种实现机制AQS,包括它的使用方式和底层工作原理。原创 2018-12-31 18:15:48 · 3859 阅读 · 0 评论 -
Java并发基石——所谓“阻塞”:Object Monitor和AQS(3)
上文我们较为详细的介绍了Java线程调度中的Object Monitor机制以及其工作情况,本文我们开始介绍Java线程调度中的另一种实现机制AQS,包括它的使用方式和底层工作原理。原创 2019-01-16 20:43:22 · 3138 阅读 · 7 评论 -
线程基础:多任务处理(13)——Fork/Join框架(解决排序问题)
之前文章讲解Fork/Join框架的基本使用时,所举的的例子是使用Fork/Join框架完成1-1000的整数累加。这个示例如果只是演示Fork/Join框架的使用,那还行,但这种例子和实际工作中所面对的问题还有一定差距。本篇文章我们使用Fork/Join框架解决一个实际问题,就是高效排序的问题。原创 2017-05-14 12:36:08 · 10823 阅读 · 12 评论 -
线程基础:JDK1.5+(11)——原子操作包
在JDK1.5+的版本中,Doug Lea和他的团队还为我们提供了一套用于保证线程安全的原子操作。我们都知道在多线程环境下,对于更新对象中的某个属性、更新基本类型数据、更新数组(集合)都可能产生脏数据问题。为了避免多线程环境下的脏数据问题,JDK1.5的版本中为我们提供了java.util.concurrent.atomic原子操作包。原创 2016-02-28 11:31:32 · 6087 阅读 · 5 评论 -
线程基础:多任务处理(15)——Fork/Join框架(要点2)
Fork/Join Pool采用优良的设计、代码实现和硬件原子操作机制等多种思路保证其执行性能。其中包括(但不限于):计算资源共享、高性能队列、避免伪共享、工作窃取机制等。本文(以及后续文章)试图和读者一起分析JDK1.8中Fork/Join Pool的源代码实现,去理解Fork/Join Pool是怎样工作的。原创 2017-05-31 09:04:19 · 4493 阅读 · 0 评论 -
线程基础:线程(1)——操作系统和线程原理
本人不才,应读者要求新开专栏,与各位读者分享自己对JAVA线程技术的理解和使用经验。这个专栏将分成两个部分:线程基础知识和锁知识。专栏的难度应该是我所开专栏中难度最低的一个,着重于线程基础知识的讲解,更适合JAVA初学者阅读,目的是希望能够帮助大家提高codeing水平和程序质量。如果您是经验老道的高手也欢迎和本人讨论相关问题,对本人文章的论点进行勘误,您的支持是我写作的关键动力。原创 2015-12-21 17:41:18 · 17849 阅读 · 8 评论 -
线程基础:线程池(5)——基本使用(上)
从本文开始,我将用两篇文章的篇幅,为各位读者呈现JAVA中原生的线程池技术。第一篇文章,我将讲解JAVA原生线程池的基本使用,并由此延伸出JAVA中和线程管理相关的类结构体系,然后我们详细描述JAVA原生线程池的结构和工作方式;第二篇文章,我们将继续深入,讲解JAVA原生线程池的高级特性,包括Thread工厂、队列、拒绝原则、钩子和相关工具类。原创 2016-01-23 10:02:49 · 17672 阅读 · 19 评论 -
线程基础:线程(3)——JAVA中的基本线程操作(中)
从这篇文章开始。我们介绍线程的工作原理。原创 2016-01-11 20:51:19 · 12257 阅读 · 32 评论 -
线程基础:线程池(7)——基本使用(下)
从本文开始,我将用两篇文章的篇幅,为各位读者呈现JAVA中原生的线程池技术。第一篇文章,我将讲解JAVA原生线程池的基本使用,并由此延伸出JAVA中和线程管理相关的类结构体系,然后我们详细描述JAVA原生线程池的结构和工作方式;第二篇文章,我们将继续深入,讲解JAVA原生线程池的高级特性,包括Thread工厂、队列、拒绝原则、钩子和相关工具类。原创 2016-01-29 17:29:00 · 8310 阅读 · 10 评论 -
线程基础:JDK1.5+(8)——线程新特性(上)
JDK1.5中一个重要特性就是util.concurrent包和其子包(当让JDK1.5中的特性还包括了很多,例如泛型、解包/封包等,但这些不属于我们这个专题讨论的范围)。在这个系列的专题中,我们已经对util.concurrent包中的一些主要功能做了介绍,例如:BlockingQueue、ThreadPoolExecutor、Executors等。这篇文章中,我们对这个包中其他中要的线程特性进行介绍。原创 2016-02-13 18:34:58 · 8535 阅读 · 14 评论 -
线程基础:线程池(6)——基本使用(中)
从本文开始,我将用两篇文章的篇幅,为各位读者呈现JAVA中原生的线程池技术。第一篇文章,我将讲解JAVA原生线程池的基本使用,并由此延伸出JAVA中和线程管理相关的类结构体系,然后我们详细描述JAVA原生线程池的结构和工作方式;第二篇文章,我们将继续深入,讲解JAVA原生线程池的高级特性,包括Thread工厂、队列、拒绝原则、钩子和相关工具类。原创 2016-02-13 18:44:44 · 8701 阅读 · 19 评论 -
线程基础:线程(4)——JAVA中的基本线程操作(下)
从这篇文章开始。我们介绍线程的工作原理。原创 2016-01-14 12:47:12 · 8565 阅读 · 17 评论 -
线程基础:JDK1.5+(10)——线程新特性(下)
JDK1.5中一个重要特性就是util.concurrent包和其子包(当让JDK1.5中的特性还包括了很多,例如泛型、解包/封包等,但这些不属于我们这个专题讨论的范围)。在这个系列的专题中,我们已经对util.concurrent包中的一些主要功能做了介绍,例如:BlockingQueue、ThreadPoolExecutor、Executors等。这篇文章中,我们对这个包中其他中要的线程特性进行介绍。原创 2016-02-17 16:31:22 · 5042 阅读 · 7 评论 -
线程基础:JDK1.5+(9)——线程新特性(中)
JDK1.5中一个重要特性就是util.concurrent包和其子包(当让JDK1.5中的特性还包括了很多,例如泛型、解包/封包等,但这些不属于我们这个专题讨论的范围)。在这个系列的专题中,我们已经对util.concurrent包中的一些主要功能做了介绍,例如:BlockingQueue、ThreadPoolExecutor、Executors等。这篇文章中,我们对这个包中其他中要的线程特性进行介绍原创 2016-02-14 22:05:52 · 6542 阅读 · 21 评论 -
线程基础:多任务处理(14)——Fork/Join框架(要点1)
Fork/Join Pool采用优良的设计、代码实现和硬件原子操作机制等多种思路保证其执行性能。其中包括(但不限于):计算资源共享、高性能队列、避免伪共享、工作窃取机制等。本文(以及后续文章)试图和读者一起分析JDK1.8中Fork/Join Pool的源代码实现,去理解Fork/Join Pool是怎样工作的。原创 2017-05-27 15:40:45 · 9372 阅读 · 3 评论 -
线程基础:多任务处理(12)——Fork/Join框架(基本使用)
ForkJoinPool由Java大师Doug Lea主持编写,它可以将一个大的任务拆分成多个子任务进行并行处理,最后将子任务结果合并成最后的计算结果,并进行输出。本文中对Fork/Join框架的讲解,基于JDK1.8+中的Fork/Join框架实现,参考的Fork/Join框架主要源代码也基于JDK1.8+。原创 2017-05-14 12:34:14 · 11089 阅读 · 1 评论 -
线程基础:线程(2)——JAVA中的基本线程操作(上)
从这篇文章开始。我们介绍线程的工作原理。原创 2016-01-05 17:35:10 · 10764 阅读 · 13 评论