java并发编程
阻塞队列的理解
一、定义 阻塞队列,顾名思义,首先,他是一个队列,而一个阻塞队列在数据结构中所起到的作用如下: 线程1向阻塞队列中添加元素,线程2向阻塞队列中移除元素 *当阻塞队列是空时,从队列中获取元素的操作将会被 【阅读更多...】
线程池—合理设置线程池大小
平时我们在项目中使用多线程时,建议不要使用jdk自带的四个创建线程池的方法:newCachedThreadPool,newFixedThreadPool,newSingleThreadExecutor 【阅读更多...】
ReentrantReadWriteLock使用例子
读写锁实现了对同一个资源边写边读的功能,以下代码可直接运行。 package com.demo.lock; import java.util.HashMap; import java.util.Ma 【阅读更多...】
多线程编程之如何使用Fork/Join
当我们需要执行大量的小任务时,有经验的Java开发人员都会采用线程池来高效执行这些小任务。然而,有一种任务,例如,对超过1000万个元素的数组进行排序,这种任务本身可以并发执行,但如何拆解成小任务需要 【阅读更多...】
多线程之FutureTask源码解读
上一篇我们解读了Future的源码,这一篇我们来解读一下他的一个唯一的实现类FutureTask。FutureTask是可取消的异步计算,这个类提供了Future的基本实现,通过实现的方法来启动和取消 【阅读更多...】
多线程之Future源码解读
Future组件展现异步计算的结果。Future提供了一些方法来判断计算是否完成、等待计算完成和返回计算的结果。当计算完成时,计算的结果只能通过get方法返回,必要的时候可以进行阻塞直到准备就绪。可以 【阅读更多...】
图解java中的可重入锁ReentrantLock
说起ReentrantLock,大家都不陌生,网上的解释也都很官方,不太好理解。本文用图文方式来跟大家探讨一下这个神奇的东东 一、定义 可重入锁又名递归锁,是指在同一个线程在外层方法获取锁的时候,再进 【阅读更多...】
java限流策略
在大数据量高并发访问时,经常会出现服务或接口面对暴涨的请求而不可用的情况,甚至引发连锁反映导致整个系统崩溃。此时你需要使用的技术手段之一就是限流,当请求达到一定的并发数或速率,就进行等待、排队、降级、 【阅读更多...】
线程池—jdk提供的四种创建线程池的方法
ThreadPoolExecutor提供了四个构造方法: public ThreadPoolExecutor(int corePoolSize, 【阅读更多...】
Semaphore的工作原理及实例
Semaphore是一种在多线程环境下使用的设施,该设施负责协调各个线程,以保证它们能够正确、合理的使用公共资源的设施,也是操作系统中用于控制进程同步互斥的量。Semaphore是一种计数信号量,用于 【阅读更多...】