多线程
多栖码农
喜欢研究底层源码,不定期创作和分享,喜欢的点点关注。
路很长,长到没时间回头;路很短,短到需要反复的走。
历史的标签无法标注多样的人生,清醒的人生无需被标签界定。
展开
-
FutureTask源码分析
java异步任务之FutureTask源码分析原创 2023-11-08 10:33:20 · 269 阅读 · 0 评论 -
ThreadPoolExecutor源码解析(二)
ThreadPoolExecutor是线程池执行器,在定义好线程池的基础信息(核心线程数、最大线程数、空闲线程驻留时间、线程队列、创建线程的工厂、拒绝策略)后,可以将线程提交给执行器执行,对使用者是透明的原创 2023-10-31 14:20:26 · 46 阅读 · 0 评论 -
ThreadPoolExecutor源码分析(一)
ThreadPoolExecutor是线程池执行器,在定义好线程池的基础信息(核心线程数、最大线程数、空闲线程驻留时间、线程队列、创建线程的工厂、拒绝策略)后,可以将线程提交给执行器执行,对使用者是透明的原创 2023-10-31 14:18:57 · 151 阅读 · 0 评论 -
LinkedBlockingQueue源码解析
LinkedBlockingQueue是非固定容量队列,内部是通过链表存放数据,并通过两把互斥锁(分别为取时互斥锁和放时互斥锁,这也是与ArrayBlockingQueue的本质区别,这样可以提高性能)来控制访问数据的同步问题。提供的方法与ArrayBlockingQueue基本是一致的,下面只介绍下有差异的地方,细节上看ArrayBlockingQueue的源码解读就行原创 2023-10-26 15:30:11 · 112 阅读 · 0 评论 -
ArrayBlockingQueue源码解析
ArrayBlockingQueue是固定容量队列,不可扩容,内部是通过Object数组存放数据,并通过一把互斥锁来控制访问数据的同步问题原创 2023-10-26 14:59:16 · 163 阅读 · 0 评论 -
CyclicBarrier使用示例
CyClicBarrier使用示例原创 2023-10-24 14:38:50 · 52 阅读 · 0 评论 -
CyclicBarrier原理及源码解析
通过AQS的互斥锁机制(ReentrantLock)+条件(Condition)实现的,用于一组线程相互之间等待,直到到达某个公共屏障点 (common barrier point),再继续执行。常用于多线程计算数据,当所有线程都完成执行后,在`CyclicBarrier`回调线程中合并计算原创 2023-10-24 14:20:30 · 66 阅读 · 0 评论 -
CountDownLatch
CountDownLatch源码分析:通过AQS的共享锁机制实现的,用于一个或多个线程等待其他线程完成的一组操作原创 2023-10-23 14:31:51 · 329 阅读 · 0 评论 -
Semaphore(信号量)
信号量就是通过AQS的共享锁机制来实现的原创 2023-10-19 14:17:34 · 65 阅读 · 0 评论 -
ReentrantReadWriteLock(可重入读写锁)
基于AQS的互斥锁(写)和共享锁(读)实现的可重入读写锁原创 2023-10-19 14:14:22 · 68 阅读 · 0 评论 -
Thread的run()与start()的区别
Java的线程是通过java.lang.Thread类来实现的。VM启动时会有一个由主方法所定义的线程。可以通过创建Thread的实例来创建新的线程。每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体。通过调用Thread类的start()方法来启动一个线程。 在Java当中,线程通常都有五种状态,创建、就绪、运行、阻塞和死亡。原创 2017-02-18 15:20:51 · 504 阅读 · 0 评论 -
Java中Runnable和Thread的区别
在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限。 下面看例子: package org.thread.demo; class MyThread extends Th转载 2017-02-18 15:18:29 · 225 阅读 · 2 评论