随笔分类 - 高并发
摘要:public class MyLock { static AtomicReference<Thread> atomicReference = new AtomicReference<>(); public static void myLock(){ System.out.println(Thread
阅读全文
摘要:使用ThreadPoolExecutor创建,不要使用Executors进行创建 ##3大方法、七大参数、4种拒绝策略 newSingleThreadExecutor() 创建单线程池 newCachedThreadPool() 创建可伸缩的线程池 newFixedThreadPool() 创建指定
阅读全文
摘要:在并发环境下,加锁和解锁需要以下三个部件的协调: 锁状态。我们要知道锁是不是被别的线程占有了,这个就是 state 的作用,它为 0 的时候代表没有线程占有锁,可以去争抢这个锁,用 CAS 将 state 设为 1,如果 CAS 成功,说明抢到了锁,这样其他线程就抢不到了,如果锁重入的话,state
阅读全文
摘要:ThreadLocal用于给各线程保存其特有的变量副本。每个线程都可以独立改变自己的副本,而不于其他线程的副本冲突。为多线程的并发访问提供了一种隔离机制。 变量值并非保存在ThreadLocal中,而是保存在各线程的私有变量ThreadLocal.ThreadLocalMap中,ThreadLoca
阅读全文
摘要:可重入锁:支持一个线程对锁的重复获取。 公平锁/非公平锁:释放锁后按时间先后顺序获取锁/释放锁后所有线程均有机会获得锁,一般非公平锁效率更高 synchronized 是Java原生的互斥同步锁,是内置的语言实现,修饰方法或同步块,无需显示释放 ReentrantLock是API层面的互斥锁,需要显
阅读全文
摘要:CountDownLatch 是一个线程同步工具类,允许一个或多个线程一直等待,直到其他线程完成工作。其核心是一个计数器,仅允许初始化时设定值,调用await()方法并在这个方法上阻塞,其余线程持有引用,调用countdown()方法使得count减一,count为零时阻塞线程继续执行。 Cycli
阅读全文
摘要:并发三大特性: 原子性:即对于一组操作,要么都成功,要么都失败。例如常见的转账操作就必须保证原子性。 可见性:每个线程的私有内存改变变量值时,其他线程对其可见。原因是每个线程为了提高运行效率,会从主存获取数据到本地,本地数据更新后,其他线程未同步数据,会道闸数据异常。 有序性:程序按一定的顺序执行,
阅读全文

浙公网安备 33010602011771号