转自https://www.chenx.tech/priority-blocking-queue/ 简单来说,方案一: public class Task implements Runnable, Comparable&…
标签:java并发
Java并发编程札记-(一)基础-04Thread详解
在Java并发编程札记-(一)基础-02创建线程一文中,讲到了Thread中提供了许多实用的方法。在Java并发编程札记-(一)基础-03线程的生命周期一文中,讲到了线程各个状态之间的转换,其中许多转换都是通过Threa…
Java并发编程札记-(四)JUC锁-03AQS
AQS,AbstractQueuedSynchronizer的缩写,是JUC中非常重要的一个类。javadoc中对其的介绍是: 为实现依赖于先进先出 (FIFO) 等待队列的阻塞锁和相关同步器(信号量、事件,等等)提供一…
Java并发编程札记-(六)JUC线程池-02ThreadPoolExecutor实现原理
本文通过学习ThreadPoolExecutor源码来学习线程池的实现原理。 简介 为什么要使用线程池 许多服务器都面临着处理大量客户端远程请求的压力,如果每收到一个请求,就创建一个线程来处理,表面看是没有问题的,但实际…
Java并发编程札记-(一)基础-01基本概念
在学习Java并发编程之前,先来了解一下几个概念。 什么是并发?维基百科中这样介绍: 在计算机科学中,并发性是指程序,算法或问题的不同部分或单元按无序或部分顺序执行而不影响最终结果的能力。这允许并行单元的并行执行,这可以…
Java并发编程札记-总结
一基础 01基本概念 并发 什么是并发 并发的优点 多线程 线程 并发与并行 线程和进程 02创建线程 创建线程的方式 Thread和Runnable该如何选择 run方法与start方法的区别 03线程的生命周期 线程…
取消与关闭(第七章)
取消与关闭 Java中没有提供任何机制来安全得终止线程,但它提供了中断(Interruption),这是一种协作机制,能够使一个线程终止另一个线程当前的工作。我们很少希望某个任务、线程或服务立即停止,因为这种立即停止会使…
Java线程池架构2-多线程调度器(ScheduledThreadPoolExecutor)
在前面介绍了java的多线程的基本原理信息:《Java线程池架构原理和源码解析(ThreadPoolExecutor)》,本文对这个java本身的线程池的调度器做一个简单扩展,如果还没读过上一篇文章,建议读一下,因为这是…
Java并发编程札记-(一)基础-05线程安全问题
在多线程编程中,可能会出现多个线程访问一个资源的情况,资源可以是同一内存区(变量,数组,或对象)、系统(数据库,web services等)或文件等等。如果不对这样的访问做控制,就可能出现不可预知的结果。这就是线程安全问…
Java并发编程札记-(三)JUC原子类-03原子方式更新数组
今天学习AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray,这几个类的共同特点是都提供数组的原子方式访问和更新功能。下面以AtomicLongArray为代表,…
Java并发编程札记-(四)JUC锁-01概述
今天来学习JUC锁。JUC锁位于java.util.concurrent.locks包下,为锁和等待条件提供一个框架,它不同于内置同步和监视器。 参考JDK1.8的java.util.concurrent.locks包,…
Java并发编程札记-(五)JUC容器-04ConcurrentSkipListMap
ConcurrentSkipListMap是线程安全的有序的哈希表。与同是有序的哈希表TreeMap相比,ConcurrentSkipListMap是线程安全的,TreeMap则不是,且ConcurrentSkipLis…