随笔分类 - # 多线程
多线程学习
摘要:一、JUC下的多线程相关类的继承关系 二、Spring 提供了org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor 可以基于xml配置文件或者配置类实例化线程。 1、XML: <!-- spring线程池 --> <bean
阅读全文
并发下的ArrayList和HashMap
摘要:并发下的ArrayList和HashMap,摘选自《实战Java高并发程序设计》一书。
阅读全文
Synchronized的内部实现原理
摘要:synchronized的作用主要有三个: 确保线程互斥的访问代码保证共享变量的修改能够及时可见(可见性)可以阻止JVM的指令重排序 在Java中所有对象都可以作为锁,这是synchronized实现同步的基础。 synchronized主要有三种应用方式: 普通同步方法,锁的是当前实例的对象静态同
阅读全文
公平锁与非公平锁
摘要:根据线程获取锁的抢占机制,锁可分为公平锁和非公平锁。 公平锁:线程获取锁的顺序是按照线程请求锁的时间顺序决定的,也就是最早请求的线程将最早获取到锁,即 FIFO 可用 JUC 中的lock提供了实现 ReentrantLock lock=new ReentrantLock (ture) 非公平锁:线
阅读全文
Java技术之AQS详解(AbstractQueuedSynchronizer)
摘要:AQS是AbstractQueuedSynchronizer的简称。AQS提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架,如下图所示。AQS为一系列同步器依赖于一个单独的原子变量(state)的同步器提供了一个非常有用的基础。子类们必须定义改变state变量的protected方法,
阅读全文
Java中的读写锁
摘要:一、读写锁 1、初识读写锁 a)Java中的锁——Lock和synchronized中介绍的ReentrantLock和synchronized基本上都是排它锁,意味着这些锁在同一时刻只允许一个线程进行访问,而读写锁在同一时刻可以允许多个读线程访问,在写线程访问的时候其他的读线程和写线程都会被阻塞。
阅读全文
ThreadLocal和Synchonized
摘要:ThreadLocal 和 synchronized 是 Java 中用于实现线程安全的两种机制,它们之间有以下几点区别: 作用范围不同: ThreadLocal:用于在多线程环境下,为每个线程提供独立的变量副本,每个线程都可以通过 ThreadLocal 访问自己的变量副本,互不干扰。synchr
阅读全文
重入锁及实现原理
摘要:可重入锁,从字面来理解,就是可以重复进入的锁。 可重入锁,也叫做递归锁,指的是同一线程外层函数获得锁之后,内层递归函数仍然有获取该锁的代码,但不受影响。 在JAVA环境下ReentrantLock和synchronized都是可重入锁。 synchronized是一个可重入锁。在一个类中,如果syn
阅读全文
java常用的并发工具类
摘要:一、等待多线程完成的CountDownLatch 需求场景:当我们需要解析一个Excel里多个sheet的数据,此时可以考虑使用多线程,每个线程解析一个sheet里的数据,等到sheet都解析完之后,程序需要提示解析完成。 当然我们可以使用join方法,join用于让当前线程等待join线程执行结束
阅读全文