吃透线程
文章平均质量分 80
多线程、线程池、锁
云深i不知处
穆先生
展开
-
线程与进程,你真得理解了吗
相信大家面试时一定没少被一个问题刁难,那就是进程和线程的区别是什么?这个问题延申开来并不像表面那么简单,今天就来深入一探。开始前先看一组非常传神的图例,相信可以帮助你更好理解进程与线程的概念:1 进程与线程的关系和区别什么是进程进程可以说是一个“执行中的程序”。程序是指令、数据及其组织形式的描述,是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。进程有哪些特征?进程依赖于程序运行而存在,进程是动态的,程序是静态的;进程是操作系统进行原创 2022-05-07 18:27:42 · 130200 阅读 · 89 评论 -
【Java多线程-1】线程概述与线程创建和使用
说到程序,离不开进程和线程这两个概念。那么这两者分别有什么作用和区别呢?1 线程概述进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。如下图所...原创 2019-11-02 18:50:12 · 12661 阅读 · 0 评论 -
深入Java线程池:从设计思想到源码解读
本文由浅入深,阐述下面4大内容,深入解读线程池1、线程池的优势2、线程池的原理3、线程池的使用4、线程池的源码解读原创 2021-03-02 09:29:35 · 31525 阅读 · 94 评论 -
【Java多线程-5】 CompletableFuture详解
CompletableFuture详解1 创建对象2 结果处理3 结果转换3.1 thenApply3.2 thenCompose4 结果消费4.1 thenAccept4.2 thenAcceptBoth4.3 thenRun5 结果组合6 任务交互6.1 applyToEither6.2 acceptEither6.3 runAfterEither6.4 runAfterBoth6.5 any...原创 2020-03-31 15:42:46 · 4318 阅读 · 2 评论 -
【Java多线程-6】synchronized同步锁
synchronizedsynchronized 原理概述操作系统层面JVM层面2 synchronized 使用参考资料前文描述了Java多线程编程,多线程的方式提高了系统资源利用和程序效率,但多个线程同时处理共享的数据时,就将面临线程安全的问题。例如,下面模拟这样一个场景:一个售票处有3个售票员,出售20张票。public class SellTickets { public s...原创 2020-03-31 15:35:49 · 4408 阅读 · 3 评论 -
【Java多线程-7】阅尽Java千般锁
前文描述了Java多线程编程,多线程的方式提高了系统资源利用和程序效率,但多个线程同时处理共享的数据时,就将面临线程安全的问题。例如,下面模拟这样一个场景:一个售票处有3个售票员,出售20张票。public class SellTickets { public static void main(String[] args) { TicketSeller seller1 ...原创 2020-03-31 15:40:46 · 3949 阅读 · 0 评论 -
【Java多线程-2】Java线程池详解
java.uitl.concurrent.ThreadPoolExecutor类是线程池中最核心的一个类,因此如果要透彻地了解Java中的线程池,必须先了解这个类。1 ThreadPoolExecutor概述1.1 构造方法在ThreadPoolExecutor类中提供了四个构造方法:public class ThreadPoolExecutor extends AbstractExecu...原创 2020-03-31 15:34:13 · 4107 阅读 · 2 评论 -
【Java多线程-4】CompletionService详解
CompletionService是一个接口,该接口只有一个实现类 ExecutorCompletionService,该类使用创建时提供的 Executor 对象(通常是线程池)来执行任务,然后将结果放入一个阻塞队列中。// Linkedblockingqueue作为任务完成队列ExecutorCompletionService(Executor executor) // 将所提...原创 2020-03-31 15:43:41 · 4024 阅读 · 0 评论 -
【Java多线程-3】Future与FutureTask
Future与FutureTask浅析FutureFuture简介Future使用示例FutureTaskFutureTask简介FutureTask使用示例前文中我们讲述了创建线程的2种方式:直接继承Thread和实现Runnable接口,但这两种方式在执行完任务之后都无法获取执行结果。自从Java 5开始,JDK提供了Callable和Future,解决了上述问题,通过它们可以在任务执行完...原创 2020-03-31 15:45:16 · 3680 阅读 · 2 评论