3 并发编程
文章平均质量分 54
学习并发编程知识
高秉文
从前端到后端到项目部署,全栈学习。系统学习各种知识,进而进阶java架构师。
展开
-
05 读写锁
1 为什么要使用读写锁,不使用synchronized使用synchronizedsynchronized搭配等待通知机制完成并发控制(写操作开始的时候,所有晚于写操作的读操作都会进入等待状态),只有写操作完成并通知后才会将等待的线程唤醒继续执行。使用读写锁读写锁实现,只需要在读操作的时候获取读锁,写操作的时候获取写锁。当写锁被获取到的时候,后续操作(读写)都会被阻塞,只有在写锁释放之后才会执行后续操作。2ReentrantReadWriteLock特点:具有与Reent..原创 2021-12-11 20:53:55 · 392 阅读 · 0 评论 -
04 死锁
死锁概念A持有B,B持有A,互相等待对方释放锁,而阻塞任务怎么防止死锁(1)加锁顺序线程按照一定的顺序加锁(2)加锁时限线程获取锁的时候加上一定的时限,超过时限则放弃对该锁的请求,并释放自己占有的锁4 产生死锁的例子```java/** * 死锁案例 * * @author gaorimao * @since 2021-12-10 */public class DeadLock implements Runnable { public int flag = 1原创 2021-12-10 21:23:00 · 237 阅读 · 0 评论 -
01-线程基础
java并发编程01-线程基础原创 2021-06-07 20:26:07 · 637 阅读 · 0 评论 -
02 线程池处理并发任务
import lombok.AllArgsConstructor;import lombok.Data;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Service;import java.util.ArrayList;import java.util.List;import java.util.concurrent.Callable;import java.util.concurrent.Ex.原创 2021-08-06 10:04:49 · 537 阅读 · 0 评论 -
03 线程池的拒绝策略
1 为什么要自定义线程池FixedThreadPool 和 SingleThreadPool允许的请求队列长度为 Integer.MAX_VALUE ,会堆积大量请求OOMCachedThreadPool 和 ScheduledThreadPool允许的创建线程数量为 Integer.MAX_VALUE,可能会创建大量线程OOM2 如何自定义线程池public ThreadPoolExecutor(int corePoolSize,原创 2021-08-06 10:04:38 · 194 阅读 · 0 评论