![](https://img-blog.csdnimg.cn/2021011521260141.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
线程
文章平均质量分 73
主要学习目标贤臣
1.线程的了解
2.多线程
3.线程的工具
4.线程在实际工作中的使用
叫我小郭、
这个作者很懒,什么都没留下…
展开
-
锁 | 原来锁还有这么多种
线程-锁文章目录线程-锁前言一、锁的类型有哪些?二、锁的原理1.AQS三、synchronized与Lock的区别1.Lock的搭档Conditon四、死锁了怎么办?五、生产中要注意的问题1. 没有理清楚线程安全的问题所在,导致锁无效2. 加锁没有考虑锁的粒度,可能导致性能问题3. 多把锁格外小心死锁问题总结前言在并发中,锁是不可缺少的一部分,在很多场景中,我们想要保证安全,锁总是我们的第一选择。于是系统的学习一下,做了个读书笔记。提示:以下是本篇文章正文内容一、锁的类型有哪些?细细一看原创 2021-02-03 17:19:45 · 204 阅读 · 4 评论 -
线程 | 并发容器读书笔记
线程-并发容器文章目录线程-并发容器前言一、HashMap容器二、ConcurrentHashMap容器三、CopyOnWriteArrayList容器四、生产问题思考前言主要对比较常见的并发容器,进行了学习。已经在一些场景中所遇到的坑,进行解决。提示:以下是本篇文章正文内容一、HashMap容器HashMap不是一个线程安全的容器,在1.8版本之前,并发环境中有可能会造成死循环,以及导致数据丢失。二、ConcurrentHashMap容器ConcurrentHashMap与Ha原创 2021-02-02 16:03:17 · 67 阅读 · 1 评论 -
线程池 | 生产中的实践
线程池-时间文章目录线程池-时间前言一、场景一:差比价运算二、任务的概念2.1 CPU密集型任务2.2 耗时IO型任务总结前言通过了一段时间的学习,终于在工作中也有机会去使用了。提示:以下是本篇文章正文内容一、场景一:差比价运算业务背景:药品报价,通过差比价规则计算出差比价,大量的计算任务需要快速执行,计算中利用了cpu密集型线程池针对处理时间较长的业务,利用io密集型线程池处理时间较短的业务。思考:执行的任务如果没有区分线程池,统一一个公用的线程池,会造成什么样的后果?@Confi原创 2021-01-29 23:07:41 · 151 阅读 · 0 评论 -
阻塞队列| 利用流程图看懂ArrayBlockingQueue源码
线程-阻塞队列文章目录线程-阻塞队列前言一、ArrayBlockingQueue简介二、ArrayBlockingQueue队列的原理2.1 一图看懂put与take源码2.1.1 put总结2.1.2 take总结总结前言阻塞队列是线程池十分重要的一个部分,当大量的任务到来时,线程池会把多出来的任务,暂存在阻塞队列中。它有好的地方,那它坑的地方你了解吗?提示:以下是本篇文章正文内容一、ArrayBlockingQueue简介是一个数组实现的环形队列,经常会使用并发容器用于存储多线程间原创 2021-01-28 10:45:54 · 643 阅读 · 0 评论 -
线程 | 并发工具的使用-Semaphore
线程-并发工具-Semaphore文章目录线程-并发工具-Semaphore前言一、Semaphore是什么?二、主要方法和核心参数1.核心参数2.构造方法3.核心方法三、原理四、实践总结前言concurrent包为我们提供了多种防止多线程同时操作一个资源的方法。volatile原子类Synchronized和LockSemaphore我们主要来学习下 Semaphore一、Semaphore是什么?Semaphore被翻译为计数信号量,通常使用原创 2021-01-27 18:12:13 · 184 阅读 · 0 评论 -
线程 | 并发工具的使用-CountDownLatch
线程-并发工具-CountDownLatch文章目录线程-并发工具-CountDownLatch一、CountDownLatch是什么?二、主要参数与方法1.主要方法2.构造方法三、原理1.核心方法源码四、实践1.用法一:一个线程等待其他多个线程都执行完毕,再继续自己的工作2.用法二:多个线程等待某一个线程的信号,同时开始执行总结注意点一、CountDownLatch是什么?CountDownLatch是一种并发流程控制的同步工具。主要的作用是等待多个线程同时完成任务之后,再继续完成主线程任务。简单原创 2021-01-25 09:53:03 · 80 阅读 · 0 评论 -
线程 | 并发工具的使用-CyclicBarrier
线程-线程工具-CyclicBarrier文章目录线程-线程工具-CyclicBarrier前言一、CyclicBarrier是什么?二、主要参数与方法1.主要参数2.方法3.构造方法三、核心方法源码四、实践1.分享一个网上的使用例子总结前言前面介绍了CountDownLatch,那CyclicBarrier和它有什么区别呢?提示:以下是本篇文章正文内容,下面案例可供参考一、CyclicBarrier是什么?CyclicBarrier 也是一种多线程并发控制的实用工具,和 CountDo原创 2021-01-24 14:56:48 · 100 阅读 · 0 评论 -
基础 | 你对Java内存模型了解多少
线程-基础-Java内存模型文章目录线程-基础-Java内存模型前言一、JVM 内存结构与Java 内存模型区别二、Java 内存模型的特性三、主内存和工作内存的关系实践前言在线程中,多次涉及到了内存模型,那它到底是什么?提示:以下是本篇文章正文内容一、JVM 内存结构与Java 内存模型区别二、Java 内存模型的特性Java 内存模型主要有三大特性,原子性、可见性、重排序三、主内存和工作内存的关系实践在实际的使用中,我们最常用的单例,如果写的不规范就会存在排序的问题,原创 2021-01-20 11:55:30 · 71 阅读 · 0 评论 -
线程池 | 如何优雅的停下线程
线程池-停下线程文章目录线程池-停下线程前言一、方案一:使用volatile标记位,利用其可见性二、方案二:调用Thread的方法interrupted1.引入库总结前言在开始之前,我们可以思考一下,如何能够让线程停下?我能想到的方案有两个。方案一:使用volatile标记位,利用其可见性。方案二:调用Thread的方法interrupted。提示:以下是本篇文章正文内容一、方案一:使用volatile标记位,利用其可见性通过代码我们来看下方案一,这是一个很经典的生产者和消费者模式原创 2021-01-19 10:19:08 · 428 阅读 · 0 评论 -
线程池 | ScheduledThreadPoolExecutor
线程-线程池认识ScheduledThreadPoolExecutor文章目录线程-线程池前言一、ScheduledThreadPoolExecutor是什么?二、类的实现与继承2.1两个重要的内部类三. 构造方法四. 独有方法五. 实践六. 源码环节七.总结前言concurrent包为我们提供了多种的线程池,其他的几种都是比较常规的,ScheduledThreadPoolExecutor比较特殊,我们就拿它出来学习学习。![在这里插入图片描述](https://img-blog.csd原创 2021-01-18 11:25:18 · 472 阅读 · 0 评论 -
线程池 | 线程如何复用?
线程-线程池线程池如何复用?文章目录线程-线程池前言一、Worker执行任务模型二、Worker线程如何增加?2.1 addWorker总结:2.2 worker源码三、Worker线程执行任务3.1 runWorker源码3.2 getTask源码3.3 addWorkerFailed源码3.4 tryTerminate源码四、原理总结4.1 线程如何复用?4.2 线程如何回收?前言在前面的几篇文章中,我们学习了关于线程的一些基础知识,也了解关于线程状态的流转,接下来我们一起学习线程池。原创 2021-01-18 00:06:32 · 1103 阅读 · 0 评论 -
基础 | 图解wait()、notify()、join()源码
线程-基础-图解wait()、notify()、join()源码文章目录线程-基础-图解wait()、notify()、join()源码前言一、wait()方法二、notify()方法三、join()方法3.1我们来通过实例看一下join的使用总结前言这一篇我们主要是对wait()、notify()、join()进行图解,可能有些粗糙,不足之处多多指出。提示:以下是本篇文章正文内容一、wait()方法我们先对Object.wait()进行一波分析。接着上一篇留下的问题为什么调用Obj原创 2021-01-17 10:50:00 · 390 阅读 · 1 评论 -
基础 | 线程的状态流转
线程-基础-线程的状态流转文章目录线程-基础-线程的状态流转前言一、线程的主要状态是什么?1.RUNNABLE-正在运行状态2. BLOCKED-阻塞状态3. WAITING-等待状态4. TIMED_WAITING-超时等待状态5. TERMINATED-终止状态总结前言上一篇主要主要是对多线程的了解,以及对Thread的start方法,进行了源码的跟踪,今天我们主要来说一说其他的状态。提示:以下是本篇文章正文内容一、线程的主要状态是什么?// Thread.State 源码publi原创 2021-01-16 10:10:04 · 318 阅读 · 0 评论 -
基础 | 了解线程
线程前言一、什么是线程,什么是进程?二. Thread类构造方法1. 主要构造方法2. Thread常用方法三. 线程状态转换总结前言一、什么是线程,什么是进程?思考:什么是线程,什么是进程?为什么要使用线程?创建线程的方式,线程是如何启动的?线程的常用方法很多时候我都习惯使用脑图来记录问题,以及回答问题,这次也继续使用脑图来回答这些问题下面我们开始稍微深入的探索一下线程的奥秘,go!二. Thread类构造方法1. 主要构造方法//构造器public Thread(Th原创 2021-01-15 21:55:56 · 113 阅读 · 0 评论