Fork me on GitHub

随笔分类 -  多线程

摘要:简介 懒加载指在多线程环境中,只创建一个实例对象。 ###代码 public class LazySingleton { private static volatile LazySingleton instance= null; public static LazySingleton getSing 阅读全文
posted @ 2022-02-18 19:37 晨度 阅读(50) 评论(0) 推荐(0) 编辑
摘要:###名词解释 synchronized 是Java中的关键字,是一种同步锁,可以修饰代码块,方法,静态的方法。synchronized(Object) 不能用String常量、Integer、 Long。 ReentrantLock 是一种同步锁,可以实现公平锁机制,获取锁和释放锁都需要手动操作。 阅读全文
posted @ 2022-01-13 19:57 晨度 阅读(297) 评论(0) 推荐(0) 编辑
摘要:###名词解释 进程 进程是OS分配资源的基本单位。 线程 线程是执行调度的基本单位(线程共享进程的内存空间,没有自己独立的内存空间,但是拥有自己的堆栈和程序计数器)。 纤程/协程 用户态的线程,线程中的线程,切换和调度不需要经过OS,即处于用户态,而不是处于内核态。 中断 硬件跟操作系统内核打交道 阅读全文
posted @ 2022-01-13 14:48 晨度 阅读(35) 评论(0) 推荐(0) 编辑
摘要:###简介 TimeUnit是java.util.concurrent包下面的一个类,表示给定单元粒度的时间段。 ###作用 时间颗粒度转换 延时 ###常用的颗粒度 TimeUnit.DAYS //天 TimeUnit.HOURS //小时 TimeUnit.MINUTES //分钟 TimeUn 阅读全文
posted @ 2022-01-08 15:58 晨度 阅读(1034) 评论(0) 推荐(0) 编辑
摘要:###简介 线程从新生到死亡的不同阶段。 ###阶段 NEW 线程刚刚创建,还没有启动。 RUNNABLE 可运行状态,由线程调度器可以安排执行。 WAITING 等待被唤醒。 TIMED WAITING 隔一段时间后自动唤醒。 BLOCKED 被阻塞,正在等待锁。 TERMINATED 线程结束 阅读全文
posted @ 2020-04-27 10:55 晨度 阅读(192) 评论(0) 推荐(0) 编辑
摘要:###简介 Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题。与Kafka、RabbitMQ用于服务间的消息队列不同,disruptor一般用于线程间消息的传递。基于Disruptor开发的系统单线程能支撑每秒600万订单。 disruptor是用 阅读全文
posted @ 2020-04-26 22:29 晨度 阅读(303) 评论(0) 推荐(0) 编辑
摘要:###集合 Java 集合框架提供了一套性能优良,使用方便的接口和类,java集合框架位于java.util包中,现分为Collection、Map、Queue三大类。 ###常用Collection ####ArrayList ####简介 在多线程环境下,由于线程不安全,会出现各种异常,用于单线 阅读全文
posted @ 2020-04-25 17:32 晨度 阅读(5305) 评论(0) 推荐(0) 编辑
摘要:###简介 ExecutorService是Java中对线程池定义的一个接口,它位于java.util.concurrent包中,在这个接口中定义了和后台任务执行相关的方法。 ###常用方法 public <T> Future<T> submit(Callable<T> task): 执行一个任务, 阅读全文
posted @ 2020-04-20 22:08 晨度 阅读(1602) 评论(0) 推荐(0) 编辑
摘要:###简介 ForkJoinPool的优势在于,可以充分利用多cpu,多核cpu的优势,把一个任务拆分成多个“小任务”,把多个“小任务”放到多个处理器核心上并行执行,当多个“小任务”执行完成之后,再将这些执行结果合并起来即可。 适用场景:最适合的是计算密集型的任务,如果存在 I/O,线程间同步,sl 阅读全文
posted @ 2020-04-20 16:31 晨度 阅读(4455) 评论(0) 推荐(1) 编辑
摘要:###简介 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于(reachable)可达状态,程序才能使用它。 从JDK 1.2版本开始,对象的引用被划分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用 阅读全文
posted @ 2020-04-20 09:19 晨度 阅读(230) 评论(0) 推荐(0) 编辑
摘要:###常用方法 public void interrupt() t.interrupt() 打断t线程(设置t线程某给标志位f=true,并不是打断线程的运行),不能打断正在竞争锁的线程。 public boolean isInterrupted() t.isInterrupted() 查询打断标志 阅读全文
posted @ 2020-04-02 12:54 晨度 阅读(320) 评论(0) 推荐(0) 编辑
摘要:##LockSupport ###名词解释 LockSupport是一个在JUC包里的线程阻塞工具类,所有的方法都是静态方法,主要用途是让线程在任意位置阻塞,广泛应用在AQS和各种JUC的锁中。 ###代码 public static void threadOne(){ System.out.pri 阅读全文
posted @ 2020-03-30 09:52 晨度 阅读(408) 评论(0) 推荐(0) 编辑
摘要:###名称解释 Sleep:意思就是睡眠,当前线程暂停一段时间让给别的线程去运行;Sleep是怎么复活的?由你的睡眠时间而定,等睡眠到规定的时间自动复活。 Yield:就是当前线程正在执行的时候停止下来进入等待队列(就绪状态,CPU依然有可能把这个线程拿出来运行),回到等待队列里在系统的调度算法里头 阅读全文
posted @ 2020-03-27 20:33 晨度 阅读(2031) 评论(0) 推荐(0) 编辑
摘要:###简介 一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。 ###线程池的创建 阅读全文
posted @ 2020-03-16 23:53 晨度 阅读(619) 评论(0) 推荐(0) 编辑
摘要:###countDownLatch ####简介 countDownLatch这个类使一个线程等待其他线程各自执行完毕后再执行。 是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都执行完毕,然后在闭锁上等待的线程就可以恢 阅读全文
posted @ 2020-03-10 13:40 晨度 阅读(350) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示