
Java多线程
文章平均质量分 95
12345sdfad
新手码农一只
展开
-
Java多线程10—线程池框架
文章目录1. 线程池框架1.1 Executor1.2 ExecutorService1.3 ThreadPoolExecutor1.4 ScheduleThreadPoolExecutor2. 线程池原理2.1 理解线程池2.2 线程池使用特点2.3 线程池的组成2.4 任务队列2.5 任务拒绝策略2.6 工厂类Executors3. 线程池工作机制3.1 工作流程4. 3种线程池4.1 newCachedThreadPool4.2 newFixedThreadPool4.3 newScheduledTh原创 2021-09-29 21:18:44 · 895 阅读 · 0 评论 -
Java多线程9—Future类框架
文章目录1. Future框架1.1 Future接口1.2 FutureTask类CAS操作核心属性构造函数接口实现Runnable接口实现Future接口的实现cancel(boolean mayInterruptIfRunning)isCancelled()isDone()get()get(long timeout, TimeUnit unit)1.3 CompletableFuture类此文大部分内容并不是本人执笔完成,因拷贝到本地笔记时忘标记原链接,因此无法指明原作者,罪过罪过,还望海涵,特此声原创 2021-09-29 21:17:34 · 736 阅读 · 0 评论 -
Java多线程8—Thread与Runnable
文章目录1. 创建多线程1.1 创建多线程的3种方式1.1.1 继承Thread类1.1.2 实现Runnable接口1.1.3 实现Callable接口1.1.4 基于线程池1.2 为什么要提出3种方式?1.2.1 Thread类的start()与run()1.2.2 3种创建方式的区别1.3 线程的声明周期2. Thread类源码解析2.1 Thread方法2.2 native方法2.3 其他方法3. 终止线程的4种方式3.1 正常退出3.2 使用标志位3.3 使用线程中断Interrupt3.4 st原创 2021-09-29 21:13:20 · 854 阅读 · 0 评论 -
Java多线程6—阻塞队列
文章目录1. 阻塞队列概述1.1 线程阻塞的情况1.2 阻塞队列的主要方法2. Java中的阻塞队列2.1 ArrayBlockingQueue(公平锁/非公平锁)2.2 LinkedBlockingQueue(读写锁)2.3 LinkedBlockingDeque2.4 PriorityBlockingQueue2.5 DelayQueue(缓存失效、定时任务 )2.6 SynchronousQueue(不存储数据、可用于传递数据)2.7 LinkedTransferQueue通常,实现线程安全的情况有原创 2021-09-29 21:12:26 · 213 阅读 · 0 评论 -
Java多线程5—ReentrantLock与Condition
文章目录1. ReentrantLock重入锁1.1 ReentrantLock源码解析1.1.1 lock操作1.1.2 release操作2. synchronized和Reetrantlock的区别3. Condition及其介绍3.1 Condition的介绍3.2 Condition在AQS中的使用3.3 Condition在阻塞队列中的实现4. [阻塞和唤醒线程——LockSupport功能简介及原理浅析](https://www.cnblogs.com/takumicx/p/9328459.h原创 2021-09-29 21:11:13 · 735 阅读 · 0 评论 -
Java多线程4—AQS
文章目录1. 锁1.1 自旋锁与互斥锁1.2 乐观锁与悲观锁1.3 公平锁与非公平锁1.4 共享锁与独占锁1.5 分段锁2. 自旋锁基础之CAS自旋2.1 CAS介绍2.2 CAS的优缺点3. AQS3.1 AQS的核心思想3.2 CLH锁3.3 MCS锁3.4 AQS源码解析自旋锁指多线程下,当一个线程尝试获取锁的时候,如果锁被占用,则在当前线程循环检查锁是否被释放,此时当前线程并没有休眠或挂起。1. 锁在前面提到了synchronized关键字,其也是Java实现的一种锁机制,但本人认为其并不能实原创 2021-09-29 21:09:08 · 261 阅读 · 0 评论 -
Java多线程3—volatile
文章目录1. Volatile1.1 volatile实现原理1.2 volatile特性1.3 volatile性能1.4 volatile适用场景1. Volatilevolatile是一种轻量且在有限的条件下线程安全技术,它保证修饰的变量的可见性和有序性,但非原子性。相对于synchronize高效,而常常跟synchronize配合使用。JMM内存模型这里主要描述的线程,工作内存,主存的变量的读写关系:主存存放线程需要操作的变量,但线程并不直接操作主存。每个线程读取主存变量都是先拷原创 2021-09-29 21:04:09 · 136 阅读 · 0 评论 -
Java多线程2—synchronized
文章目录1. synchronized概念1.1 介绍1.2 实现原理1.4 Monitor对象1.3 synchronized使用场景1.4 JVM对锁机制的优化1.4.1 在Java SE 1.6时的锁机制1.4.2 偏向锁、轻量级锁1.4.3 锁实验1.4.4 JVM提出的其他优化2. 控制方法2.1 sleep()和wait()方法的区别1. synchronized概念1.1 介绍synchronized不同于前面提到的ReentrantLock,其是一个Java语言提供的关键字,从某种层面原创 2021-09-29 21:03:34 · 188 阅读 · 0 评论 -
Java多线程1—并发引言
文章目录1. 进程与线程1.1 概念1.2 死锁2. JMM内存模型3. 多线程与JMM3.1 原子性3.2 可见性3.3 有序性3.3.1 指令重排3.3.2 Happend-before原则解决编译器重排序3. 小结1. 进程与线程1.1 概念进程进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程原创 2021-09-29 21:01:46 · 172 阅读 · 0 评论