并发编程
文章平均质量分 92
小望没烦恼
这个作者很懒,什么都没留下…
展开
-
线程池(ThreadPoolExecutor)具体参数
一、ThreadPoolExecutor构造方法 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable&g原创 2021-04-26 15:18:52 · 474 阅读 · 0 评论 -
AQS源码阅读(JDK1.8)
一、简介 AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,是Java中众多锁以及并发工具的基础,其底层采用乐观锁,大量使用了CAS操作, 并且在冲突时,采用自旋方式重试,以实现轻量级和高效地获取锁。 AQS虽然被定义为抽象类,但事实上它并不包含任何抽象方法。这是因为AQS是被设计来支持多种用途的,如果定义抽象方法,则子类在继承时必须要覆写所有的抽象方法,这显然是不合理的。所以AQS将一些需要子类覆写的方法都设计成protect方法,将其默认实现为抛出UnsupportedOpera原创 2021-04-26 14:40:13 · 378 阅读 · 0 评论 -
ThreadLocal源码阅读(JDK1.8)
一、简介 ThreadLocal 提供了线程间数据隔离的功能,从它的命名上也能知道这是属于一个线程的本地变量。也就是说,每个线程都会在 ThreadLocal 中保存一份该线程独有的数据,所以它是线程安全的。ThreadLocal的作用域就是线程。 一个简单的例子展示ThreadLocal的特性 public class ThreadLocalTest { public static void main(String[] args) { ThreadLocal<String&g原创 2021-04-21 19:15:44 · 172 阅读 · 0 评论 -
volatile关键字
一、简介 volatile是Java提供的一种轻量级的同步机制。Java语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量,相比于synchronized,volatile更轻量级,因为它不会引起线程上下文的切换和调度。但是volatile 变量的同步性较差(有时它更简单并且开销更低),而且其使用也更容易出错。主要有两个功能: 保证多线程下变量的可见性 禁止指令重排序 二、java内存模型JMM Java内存模型,是java虚拟机规范中所定义的一种内存模型,Java内存模型是标准化的原创 2021-04-21 11:01:05 · 117 阅读 · 0 评论 -
Synchronized关键字
一、简介 synchronized 关键字解决的是多个线程之间访问资源的同步性,synchronized关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。 二、用法 修饰实例方法: 作用于当前对象实例加锁,进入同步代码前要获得 当前对象实例的锁 修饰静态方法: 也就是给当前类加锁,会作用于类的所有对象实例 ,进入同步代码前要获得 当前 class 的锁。因为静态成员不属于任何一个实例对象,是类成员。所以,如果一个线程 A 调用一个实例对象的非静态 synchronized 方法,而线程原创 2021-04-20 13:53:02 · 70 阅读 · 0 评论