![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java线程
者羽_zb
一步两步,一步两步……
展开
-
ThreadPoolExecutor线程池工具类
import lombok.AccessLevel; import lombok.AllArgsConstructor; import java.util.concurrent.*; import java.util.concurrent.atomic.AtomicInteger; /** * 线程池工具类 */ @AllArgsConstructor(access = AccessLevel.PRIVATE) public class ThreadPoolUtil { /** .原创 2020-12-24 10:52:03 · 1018 阅读 · 0 评论 -
java中的线程池Executor
线程池优点: 降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗 提高响应速度:当任务到达时,任务可以不需要等到线程穿件就能立即执行 提高线程的可管理性:线程时稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配、调优和监控 实现原理: 当向线程池提交一个任务后: 1)线程池判断核心线程池里的线程是否都在执行任务。如果不是,则创建一个新的工作线程来执行任务。如果核心线程池里的线程都在执行任务,则进入下个流程 2)线程池判断工作队列是否原创 2020-12-24 09:02:16 · 100 阅读 · 0 评论 -
工作窃取模式 Fork/Join
介绍: Fork:分割任务 Join:合并结果 当一个大任务(比较耗时,数据量比较大)时,可以把这个任务分割成若干互不依赖的子任务,为了减少线程竞争,把子任务分别放入不同队列,并为每个队列创建一个单独的工作线程,当有线程提前把自己队列任务做完,为了提高效率,已经做完任务的线程会去其他队列窃取任务执行,以帮助其他未完成的线程(而不是自己等着)。此时他们访问同一个队列,为了减少窃取任务线程和被窃取任务线程之间的竞争,通常会使用双端队列。被窃取任务线程永远从双端队列头部取任务执行,窃取任务线程永远从双端队列原创 2020-12-22 08:55:47 · 555 阅读 · 0 评论 -
java中的锁
介绍: ReentrantLock,可重入锁,是一种递归无阻塞的同步机制。它可以等同于 synchronized 的使用,但是 ReentrantLock 提供了比 synchronized 更强大、灵活的锁机制,可以减少死锁的发生,同时ReentrantLock还可以实现公平锁机制 可重入:广义上的可重入锁指的是可重复可递归调用的锁,在外层使用锁之后,在内层仍然可以使用,并且不发生死锁(前提得是同一个对象或者class),这样的锁就叫做可重入锁。ReentrantLock和synchronized都是可原创 2020-12-19 10:15:51 · 107 阅读 · 1 评论 -
java线程
进程与线程: 1)进程:进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间。进程不依赖于线程而独立存在,一个进程中可以启动多个线程。比如启动一个java程序就是一个进程。 2)线程:现代操作系统调度的最小单元,是进程的一部分,在一个进程中可以创建多个线程,每个线程可以拥有各自的堆栈,程序计数器和局部变量,并且可以访问共享的内存变量。 java线程的五种状态: 1)新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread(); 2原创 2020-12-16 09:22:29 · 74 阅读 · 0 评论