java 多线程
萌之兰
这个作者很懒,什么都没留下…
展开
-
ThreadLocal 详解
ThreadLocal 详解目录ThreadLocal 详解1、ThreadLocal 简介2、ThreadLocal的使用3、实现原理--重要源码分析4、使用Thread需要注意的内存泄露问题。5、ThreadLocal的应用场景6、总结1、ThreadLocal 简介多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时...原创 2020-03-31 00:07:28 · 163 阅读 · 0 评论 -
Java多线程 各种锁(一篇全搞懂)
Java多线程 锁文章目录Java多线程 锁1、乐观锁与悲观锁2、公平锁与非公平锁3、可重入锁与不可重入锁4、独享锁与共享锁5、自旋锁 VS 适应性自旋锁6、无锁 、 偏向锁、量级锁 和 重量级锁(难点)1、乐观锁与悲观锁(1)悲观锁对于同一个数据的并发操作,悲观锁认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。Java中,syn...原创 2020-03-02 19:12:42 · 4653 阅读 · 0 评论 -
Java多线程 Callable和Future
Java多线程 Callable和Future文章目录Java多线程 Callable和Future1、简介2、使用1、简介(1)先来了解一下Callable 接口Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其他线程执行的任务。Callable接口的定义如下:public interface Callable<V&g...原创 2020-03-01 23:26:16 · 275 阅读 · 0 评论 -
Java多线程 一篇搞懂线程池
Java多线程 线程池的使用文章目录Java多线程 线程池的使用1、线程池的简介1.1 什么是线程池1.2 线程池的好处2、实现原理2.1 线程池处理流程图2.2 ThreadPoolExecutor的处理流程3、常见线程池的创建3.1 Executors简单创建4种线程池3.2 ThreadPoolExecutor手动创建线程池4、 提交任务的几种方式5、线程池的关闭6、如何配置线程池1、线...原创 2020-03-01 22:24:31 · 742 阅读 · 0 评论 -
Java多线程 同步队列详解(AQS)
Java多线程 同步队列详解(AQS)文章目录Java多线程 同步队列详解(AQS)1、AQS简介1.1 什么是AQS1.2 什么是CLH锁队列2、ASQ 提供的各种锁实现流程2.1 独占锁2.2 共享锁2.3 可重入锁2.4 公平锁与非公平锁2.5 读写锁1、AQS简介1.1 什么是AQS队列同步器(AQS)是用来构建锁或者其他同步组件的基础框架,使用一个int型变量代表同步状态,通过内...原创 2020-03-01 15:23:28 · 1630 阅读 · 0 评论 -
Java多线程 乐观锁、悲观锁、以及CAS算法
Java多线程 乐观锁、悲观锁、以及CAS算法文章目录Java多线程 乐观锁、悲观锁、以及CAS算法1、乐观锁1.1 概念1.2 应用1.3 乐观锁的缺点2 、悲观锁2.1 概念2.2 应用3、CAS算法3.1 CAS 算法原理3.2 CAS与synchronized的使用情景1、乐观锁1.1 概念该锁总是很乐观的,在多线程并发过程中,不会认为别人每次会修改自己的数据,所以在别人操作时候不...原创 2020-02-29 20:14:08 · 540 阅读 · 0 评论 -
Java多线程 ReadWriteLock 实现读者写者问题
Java多线程 ReadWriteLock读写锁的使用文章目录Java多线程 ReadWriteLock读写锁的使用1、ReadWriteLock 简介2、实例:读者写者问题3、总结1、ReadWriteLock 简介(1)ReadWriteLock接口的实现类-ReentrantReadWriteLock读写锁两个锁,一个是读操作相关的锁也成为共享锁,一个是写操作相关的锁 也称为排他锁。通...原创 2020-02-29 17:41:08 · 1789 阅读 · 0 评论 -
Java多线程 ReentrantLock与Condition
Java多线程 ReentrantLock与Condition文章目录Java多线程 ReentrantLock与Condition原创 2020-02-29 14:29:20 · 1114 阅读 · 0 评论 -
Java 多线程等待/通知机制
Java多线程 等待/通知机制文章目录Java多线程 等待/通知机制1、什么是等待通知机制2、底层实现原理2.1 对象模型2.2 Moniter(对象监视者)2.3 原理3、实例:生产者消费者问题4、总结1、什么是等待通知机制(1)提出原因如果某一线程通过while轮询机制来检测某一条件,轮询时间间隔很小,会更浪费CPU资源;如果轮询时间间隔很大,可能会取不到想要的数据,所以就需要一种机制...原创 2020-02-28 16:38:48 · 868 阅读 · 0 评论 -
volatile 关键字
volatile 关键字文章目录volatile 关键字1、volatile 的概念2、volatile类型的变量保证对所有线程的可见性*3、volatile变量禁止指令重排序优化4、volatile 关键字 与 synchronized 关键字的区别1、volatile 的概念关键字volatile可以说是java虚拟机中提供的最轻量级的同步机制。 在 JDK1.2 之前,Java的内存模...原创 2020-02-25 22:05:39 · 495 阅读 · 0 评论 -
synchronzied 关键字
synchronzied 关键字文章目录synchronzied 关键字1、概念2、修饰修饰实例方法3、修饰静态方法4、同步代码块5、可重入锁6、底层的实现原理7、Synchronized 和 ReenTrantLock 的对比1、概念线程安全是并发编程中的重要关注点,应该注意到的是,造成线程安全问题的主要诱因有两点,一是存在共享数据(也称临界资源),二是存在多条线程共同操作共享数据。因此...原创 2020-02-26 13:11:18 · 223 阅读 · 0 评论 -
Java 多线程生命周期
多线程生命周期文章目录多线程生命周期1、五个阶段1.1 新建1.2 就绪1.3 运行1.4 阻塞1.5 死亡1、五个阶段线程的生命周期包含5个阶段,包括:新建、就绪、运行、阻塞、销毁。其之间的转换关系如下图1.1 新建当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时它和其他的Java对象一样,仅仅由Java虚拟机为其分配内存,并初始化其成员变量的值。此时的线程对象没...原创 2020-02-28 12:15:20 · 285 阅读 · 0 评论 -
Java 创建线程三种方式
Java 创建线程三种方式文章目录Java 创建线程三种方式1、继承Thread类创建线程2、实现Runnable接口创建线程3、使用Callable和Future创建线程4、总结Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。Java可以用三种方式来创建线程(1)继承Thread类创建线程(2)实现Runnable接口创建线程(3)使用Calla...原创 2020-02-27 23:49:18 · 256 阅读 · 0 评论