
并发编程
文章平均质量分 90
小强同志
这个作者很懒,什么都没留下…
展开
-
并发编程之定时任务&定时线程池
ScheduledThreadPoolExecutor前言原理总结前言它用来处理延时任务或定时任务。定,时线程池类的类结构图它接收SchduledFutureTask类型的任务,是线程池调度任务的最小单位,有三种提交任务的方式:schedulescheduledAtFixedRatescheduledWithFixedDelay它采用DelayQueue存储等待的任务DelayQueue内部封装了一个PriorityQueue,它会根据time的先后时间排序,若time相同则根据s原创 2022-01-19 16:37:06 · 1941 阅读 · 0 评论 -
编发编程之Future&Fork&Join框架原理分析
一、什么是 Fork/Join 框架?Fork/Join 框架是 Java7 提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。Fork 就是把一个大任务切分为若干子任务并行的执行,Join 就是合并这些子任务的执行结果,最后得到这个大任务的结果。比如计算1+2+…+10000,可以分割成 10 个子任务,每个子任务分别对 1000 个数进行求和,最终汇总这 10 个子任务的结果。如下图所示:Fork/Jion特性:ForkJo原创 2022-01-19 16:02:20 · 585 阅读 · 0 评论 -
并发编程之Executor线程池原理与源码解读
并发编程之Executor线程池原理与源码解读一、线程池是什么?二、线程的实现方式三、Executor框架四、线程池原理一、线程池是什么?“线程池”,顾名思义就是一个线程缓存,线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,因此Java中提供线程池对线程进行统一分配、调优和监控。线程池介绍在web开发中,服务器需要接受并处理请求,所以会为一个请求来分配一个线程来进行处理。如果每次请求都新创建一个线程的话实现起来非常简便,但是存在一个问题:如果并发的请求数量非常多,但每原创 2022-01-19 11:45:39 · 128 阅读 · 0 评论 -
并发编程之Atomic&Unsafe魔法类详解
**原子操作**原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomicoperation)意为”不可被中断的一个或一系列操作” 。在多处理器上实现原子操作就变得有点复杂。本文让我们一起来聊一聊在Inter处理器和Java里是如何实现原子操作的。1、相关术语2、处理器如何实现原子操作32位IA-32处理器使用基于对缓存加锁或总线加锁的方式来实现多处理器之间的原子操作。2.1 处理器自动保证基本内存操作的原子性首先处理器会自动保证基本的内存操作的原子性。处理器保证从系原创 2022-01-18 21:47:17 · 137 阅读 · 0 评论 -
并发编程之Tools(Semaphore&CountDownLatch&CyclicBarrier)
1. Semaphore 是什么?Semaphore 字面意思是信号量的意思,它的作用是控制访问特定资源的线程数目。2. 怎么使用 Semaphore?2.1 构造方法public Semaphore(int permits)public Semaphore(int permits, boolean fair)permits 表示许可线程的数量fair 表示公平性,如果这个设为 true 的话,下次执行的线程会是等待最久的线程2.2 重要方法public void acquire() t原创 2022-01-18 16:20:54 · 97 阅读 · 0 评论 -
AbstractQueuedSynchronizer(AQS)
Java并发编程核心在于java.concurrent.util包而juc当中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列、条件队列、独占获取、共享获取等,而这个行为的抽象就是基于AbstractQueuedSynchronizer简称AQS,AQS定义了一套多线程访问共享资源的同步器框架,是一个依赖状态(state)的同步器。AQS具备特性•阻塞等待队列•共享/独占•公平/非公平•可重入•允许中断例如Java.concurrent.util当中同步器的实现如Lock,La原创 2022-01-18 15:01:51 · 75 阅读 · 0 评论 -
synchronized使用与原理
synchronized内置锁是一种对象锁(锁的是对象而非引用),作用粒度是对象,可以用来实现对临界资源的同步互斥访问,是可重入的。加锁的方式:同步实例方法,锁是当前实例对象同步类方法,锁是当前类对象同步代码块,锁是括号里面的对象synchronized底层原理synchronized是基于JVM内置锁实现,通过内部对象Monitor(监视器锁)实现,基于进入与退出Monitor对象实现方法与代码块同步,监视器锁的实现依赖底层操作系统的Mutex lock(互斥锁)实现,它是一个重量级锁性能较原创 2022-01-17 21:50:04 · 472 阅读 · 0 评论