![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
qq_24286273
一枚底层非科班小码农要逆袭 难如登天
展开
-
ThreadPoolExecutor源码解析
ThreadPoolExecutor源码解析1、常用变量的解释// 1. `ctl`,可以看做一个int类型的数字,高3位表示线程池状态,低29位表示worker数量private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0));// 2. `COUNT_BITS`,`Integer.SIZE`为32,所以`CO...原创 2020-01-26 23:29:26 · 99 阅读 · 0 评论 -
多线程学习8之线程池(下)
Executors创建线程池的工厂类,有创建多种不同线程池的方法Executors.newSingleThreadExecutor这个方法创建一个单线程的线程池,单线程的线程池的好处是比直接创建的线程易于维护,并且功能更强Executors.newCachedThreadPool这是一个缓存线程池,没有核心线程,每个线程的失效时间为60秒,使用默认的工厂和默认的策略,创建方法如下...原创 2020-01-26 23:27:10 · 245 阅读 · 0 评论 -
多线程学习笔记7之线程池
Executors创建线程池的类,提供四种线程池:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程示例代码:public class CallableDemo { public static void main(String[] args) throws ExecutionException, I...原创 2020-01-25 16:31:08 · 145 阅读 · 0 评论 -
多线程学习笔记6之容器
Hashtable 同步表跟HashMap一样,不同的是Hashtable线程安全的,效率比较低,锁的整个表,只支持一个线程同时运行,一般使用它的替代者ConcurrentHashMapConcurrentHashMap同步的Hash表数据结构,替代Hashtable,效率比Hashtable高(线程数有关,线程数越多越有优势),下面是国外的一张比较Hashtable和ConcurrentH...原创 2020-01-22 19:19:25 · 157 阅读 · 1 评论 -
多线程学习笔记5之ThreadLocal和强 软 弱 虚引用
ThreadLocalThreadLocal中有一个Map,为每个线程维护一个副本,保证每个线程中的数据进行隔离,下面我们看一个小程序public class ThreadLocalDemo { static Person p = new Person(); public static void main(String[] args) { new Thre...原创 2020-01-21 18:15:18 · 288 阅读 · 0 评论 -
多线程学习4之阻塞、唤醒线程
LockSupport 阻塞、唤醒线程LockSupport类的park,unpark方法用来阻塞和唤醒线程,类似于wait、notify,下面以代码实例举例public class LockSupportDemo { public static void main(String[] args) { Thread t = new Thread(() -> {...原创 2020-01-20 15:10:46 · 162 阅读 · 0 评论 -
多线程学习笔记3之ReentrantLock
比较LongAdder、AtomicLong、synchronized(Long)效率public class AtomicVsSyncVsLongAdder { static long count2 = 0L; static AtomicLong count1 = new AtomicLong(0L); static LongAdder count3 = new Lon...原创 2020-01-19 00:49:42 · 108 阅读 · 0 评论 -
多线程学习笔记2-volatile
volatile关键字保证线程可见性public class VolatileDemo { /*volatile*/ boolean flag = true; public void m() { System.out.println("m start..."); while (flag) { //do nothin...原创 2020-01-18 14:22:56 · 100 阅读 · 0 评论 -
多线程学习之synchronized
synchronize 可重入锁public class ReentrantDemo { synchronized void m1(){ System.out.println("m1 start..."); try { TimeUnit.SECONDS.sleep(1); } catch (Interrupt...原创 2020-01-18 00:20:27 · 96 阅读 · 0 评论