![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
文章平均质量分 77
soliderzzz
沉迷学习,不能自拔,strategic FooYou Agent
展开
-
java自旋锁
自旋锁(Spin lock)自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是 否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。其作用是为了解决某项资源的互斥使用。因为自旋锁不会引起调用者睡眠,所以自旋锁的效率远 高于互斥锁。虽然它的效率比互斥锁高,但是它也有些不足之处:1、自旋锁一直占用CPU,他在未获得锁的情况下,一直运行--自旋,所以占用着CPU,如果不能在很短的时 间内获得锁,这无疑会使CPU效率降低。2、在用自旋锁时转载 2021-11-14 11:50:26 · 273 阅读 · 0 评论 -
Java并发之AQS详解
一、概述 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch…。以下是本文的目录大纲:概述框架源码详解简单应用 若有不正之处,请谅解和批评指正,不胜感激。请尊重作者劳动成果,转载请标明原文链接(原文转载 2021-11-14 11:45:56 · 134 阅读 · 0 评论 -
java.util.Timer基本使用
一、Timer基本使用在Java中为我们提供了Timer来实现定时任务,当然现在还有很多定时任务框架,比如说Spring、QuartZ、Linux Cron等等,而且性能也更加优越。但是我们想要深入的学习就必须先从最简单的开始。Timer方法摘要四种使用方式import java.util.Calendar;import java.util.Date;import java.util.Timer;import java.util.TimerTask; public class转载 2020-10-02 11:51:25 · 1937 阅读 · 0 评论 -
用户线程和守护线程
Java分为两种线程:用户线程和守护线程。 所谓守护线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因 此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。反过来说,只要任何非守护线程还在运行,程序就不会终止。 守护线程和用户线程的唯一不同之处就在于虚拟机的离开:如果用户线程已经全部退出运行了,只剩下守护线程存在了,虚拟机也就退出了。 因为没有了被守护者,守护线程也就没有工作可做了转载 2020-07-19 16:06:09 · 502 阅读 · 0 评论 -
《Java Concurrency in Practice》中文版笔记
第1章 简介1.1 并发简史茶壶和面包机的生产商都很清楚:用户通常会采用异步方式来使用他们的产品,因此当这些机器完成任务时都会发出声音提示。1.2 线程的优势线程能够将大部分的异步工作流转换成串行工作流,因此能更好地模拟人类的工作方式和交互方式。线程还可以简化JVM的实现,垃圾收集器通常在一个或多个专门的线程中运行。因此,操作系统提供了一些高效的方法来实现多路I/O,例如Unix的select和poll等系统调用,要调用这些方法,Java类库需要获得一组实现非阻塞I/O的包(java.ni转载 2021-06-20 15:22:19 · 773 阅读 · 0 评论 -
java线程池优化--ThreadPoolExecutor机制
ThreadPoolExecutor机制一、概述1、ThreadPoolExecutor作为java.util.concurrent包对外提供基础实现,以内部线程池的形式对外提供管理任务执行,线程调度,线程池管理等等服务;2、Executors方法提供的线程服务,都是通过参数设置来实现不同的线程池机制。3、先来了解其线程池管理的机制,有助于正确使用,避免错误使用导致严重故障。同时可...转载 2019-11-03 09:14:34 · 277 阅读 · 0 评论 -
java的线程池有哪些类型,作用分别是什么
java里面的线程池的顶级接口是Executor,Executor并不是一个线程池,而只是一个执行线程的工具,而真正的线程池是ExecutorService。java中的有哪些线程池?1.newCachedThreadPool创建一个可缓存线程池程2.newFixedThreadPool 创建一个定长线程池3.newScheduledThreadPool 创建一个定长线程池4....转载 2019-11-03 09:12:55 · 391 阅读 · 0 评论 -
深入剖析线程池实现原理
1.线程池状态 2.任务的执行 3.线程池中的线程初始化 4.任务缓存队列及排队策略 5.任务拒绝策略 6.线程池的关闭 7.线程池容量的动态调整1.线程池状态 在ThreadPoolExecutor中定义了一个volatile变量,另外定义了几个static final变量表示线程池的各个状态: 1 2 ...转载 2019-11-03 09:12:42 · 164 阅读 · 0 评论 -
什么是线程池?线程池的工作原理和使用线程池的好处?
一个线程池管理了一组工作线程,同时它还包括了一个用于放置等待执行 任务的任务队列(阻塞队列)。默认情况下,在创建了线程池后,线程池中的线程数为 0。当任务提交给线程池之后的处理策略如下:1. 如果此时线程池中的数量小于 corePoolSize(核心池的大小),即使线程池中的线程都处于空闲状态,也要创建新的线程来处理被添加的任务(也 就是每来一个任务,就要创建一个线程来执行任务)。2....转载 2019-11-01 15:32:31 · 617 阅读 · 0 评论 -
Java中实现线程同步的三种方法
Java中实现线程同步的三种方法实现同步的三种方法多线程共享数据时,会发生线程不安全的情况,多线程共享数据必须同步。实现同步的三种方法:使用同步代码块 使用同步方法 使用互斥锁ReetrantLock(更灵活的代码控制)代码示例:import java.util.concurrent.locks.ReentrantLock;public class SyncThre...转载 2019-10-22 22:16:23 · 168 阅读 · 0 评论