随笔分类 - JUC
多线程与高并发
摘要:面试题1 实现一个容器,提供两个方法add、size,写两个线程: 线程1,添加10个元素到容器中 线程2,实时监控元素个数,当个数到5个时,线程2给出提示并结束 wait¬ify /** * 曾经的面试题:(淘宝?) * 实现一个容器,提供两个方法,add,size * 写两个线程,线程1添
阅读全文
摘要:ThreadLocal ThreadLocal 修饰的变量,是线程独有的 ThreadLocal源码 set方法 获取当前线程,并获取当前线程的ThreadLocalMap实例(从getMap(Thread t)中很容易看出来)。 如果获取到的map实例不为空,调用map.set()方法,否则调用构
阅读全文
摘要:Atomic Vs Sync Vs LongAdder package com.mashibing.juc.c_018_00_AtomicXXX; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.Ato
阅读全文
摘要:volatile volatile作用 保证线程的 可见性 ,同时 禁止指令的重排序 可见性 堆内存是所有线程共享里面的内存,除了共享的内存之外呢,每个线程都有自己的专属的区域,都有自己的工作内存,如果说在共享内存里有一个值的话,当我们线程,某一个线程都要去访问这个值的时候,会将这个值copy一份,
阅读全文
摘要:多线程 基本概念 什么是叫一个进程? 什么叫一个线程? Program app QQ.exe 进程: 做一个简单的解释,你的硬盘上有一个简单的程序,这个程序叫QQ.exe,这是一个程序, 这个程序是一个静态的概念,它被扔在硬盘上也没人理他,但是当你双击它,弹出一个界面输入账 号密码登录进去了,OK,
阅读全文
摘要:JMH 官网 http://openjdk.java.net/projects/code-tools/jmh/ 创建JMH测试 创建Maven项目,添加依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apa
阅读全文
摘要:几类线程池 ThreadPoolExecutor:我们通常所说的线程池。多个线程共享同一个任务队列。 SingleThreadPool CachedThreadPool FixedThreadPool ScheduledPool ForkJoinPoll:先将任务分解,最后再汇总。每个线程有自己的任
阅读全文
摘要:面试题 LockSupport sync wait notify 线程池 三个接口 相关接口及类 Callable 类似Runnable 有返回值 Future 存储执行的将来才产生的结果 FutureTask 有返回值的任务,Runnable 与Future结合 CompletableFuture
阅读全文
摘要:容器图 一、MAP 1、不需要同步的情况 HashMap TreeMap LinkedHashMap 2、并发不高的情况 Hashtable Collections.synchronizedMap(); 3、高并发的情况 ConcurrentHashMap (分成16段,然后给各段加锁,多线程访问小
阅读全文