一、Semaphore辅助类 Semaphore 通常我们叫它信号量, 可以用来控制同时访问特定资源的线程数量,通过协调各个线程,以保证合理的使用资源。 可以把它简单的理解成我们停车场入口立着的那个显...
JUC高并发-Callable接口
创建线程的方式有多种: 进程Thread类 实现Runnable接口 Callable接口 线程池方式 问题: 很多时候我们让多线程去帮我们处理事情,是需要拿到返回值的,有了异常也可以处理,比如某系统,一个页面展...
JUC高并发-公平锁与非公平锁
ReentrantLock的实现是基于其内部类 FairSync(公平锁)和 NonFairSync(非公平锁)实现的。 ReentrantLock公平锁与非公平锁的实现原理区别就是抽象方法 try...
JUC高并发-集合线程安全问题与解决方案
一、ArrayList线程安全问题打开ArrayList的源码可以看到,add方法里面并没有synchronize关键字,即线程不安全的,当我们使用多线程进行操作的时候,可能会报错ConcurrentModificationExcep...
JUC高并发-Condition的使用
一、Condition的概念 回忆 synchronized 关键字,它配合 Object 的 wait()、notify() 系列方法可以实现等待/通知模式。 对于 Lock,通过 Con...
JUC高并发-Lock接口概述与实现
Lock实现提供比使用synchronized方法和语句可以获得的更广泛的锁定操作。 一、Synchronized 和 Lock的概念 Synchronized 是 Java 并发编程中很重要的关键字,另外一个很重要的...
JUC高并发-JUC概述
JUC 就是 java.util .concurrent 工具包的简称。这是一个处理线程的工具包,JDK 1.5开始出现的,在此包中增加了在并发编程中很常用的工具类。 一、进程与线程1.1 进程 一个在内存中运...