当前位置:首页 > 经验 >

线程池原理和实例(线程池的结构和原理)

来源:原点资讯(www.yd166.com)时间:2022-11-03 06:03:39作者:YD166手机阅读>>

1、FutureTask在不同阶段拥有不同的状态state,初始化为NEW;

2、FutureTask类实现了Runnable接口,这样就可以通过Executor.execute方法提交FutureTask到线程池中等待被执行,最终执行的是FutureTask的run方法;

FutureTask.get实现

线程池原理和实例,线程池的结构和原理(21)

内部通过awaitDone方法对主线程进行阻塞,具体实现如下:

线程池原理和实例,线程池的结构和原理(22)

1、如果主线程被中断,则抛出中断异常;

2、判断FutureTask当前的state,如果大于COMPLETING,说明任务已经执行完成,则直接返回;

3、如果当前state等于COMPLETING,说明任务已经执行完,这时主线程只需通过yield方法让出cpu资源,等待state变成NORMAL;

4、通过WaitNode类封装当前线程,并通过UNSAFE添加到waiters链表;

5、最终通过LockSupport的park或parkNanos挂起线程;

FutureTask.run实现

线程池原理和实例,线程池的结构和原理(23)

FutureTask.run方法是在线程池中被执行的,而非主线程

1、通过执行Callable任务的call方法;

2、如果call执行成功,则通过set方法保存结果;

3、如果call执行有异常,则通过setException保存异常;

set

线程池原理和实例,线程池的结构和原理(24)

栏目热文

mycat和sharding优缺点(mycat的替代品)

mycat和sharding优缺点(mycat的替代品)

在我们的项目发展到一定阶段之后,随着数据量的增大,分库分表就变成了一件非常自然的事情。常见的分库分表方式有两种:客户端模...

2022-11-03 05:56:38查看全文 >>

线程池的四种实现方式(线程池创建的几种方法)

线程池的四种实现方式(线程池创建的几种方法)

不经常使用线程池的童鞋,还有对几种线程的使用不甚了解的童鞋,可以读一下此文,并关注后续线程池相关文章连载。本篇内容大纲:...

2022-11-03 05:36:42查看全文 >>

一张图看懂线程和进程(进程与线程通俗讲解)

一张图看懂线程和进程(进程与线程通俗讲解)

进程我们都知道计算机的核心是CPU,它承担了所有的计算任务;而操作系统是计算机的管理者,它负责任务的调度、资源的分配和管...

2022-11-03 05:49:08查看全文 >>

线程池的使用实例(线程池的使用场景)

线程池的使用实例(线程池的使用场景)

线程池做什么: 网络请求通常有两种形式:第一种,请求不是很频繁,而且每次连接后会保持相当一段时间来读数据或者写数据,最后...

2022-11-03 05:37:09查看全文 >>

线程池架构原理图解(线程池工作原理及方法)

线程池架构原理图解(线程池工作原理及方法)

上篇《》文章末尾,有朋友留言提到文中的场景是IO密集型操作,不是CPU密集操作,不需要使用线程池,我猜这位朋友可能想表达...

2022-11-03 05:27:26查看全文 >>

线程池工作原理图解(线程池的结构和原理)

线程池工作原理图解(线程池的结构和原理)

前言本文以程序员做需求的例子,比喻线程池的工作过程。以故事白话的方式展开,跟大家阐述线程池工作原理,以方便大家更好理解线...

2022-11-03 05:52:26查看全文 >>

线程池底层原理(线程池设计原理图解)

线程池底层原理(线程池设计原理图解)

java的线程池说白了就是建一个任务池子跟一个线程池子,当任务池子里的任务过来了就由线程池里的活跃线程去消费,等任务池子...

2022-11-03 05:58:11查看全文 >>

java线程池工作原理(mycat和sharding优缺点)

java线程池工作原理(mycat和sharding优缺点)

关注公众号领资料搜索公众号【Java耕耘者】,回复【Java】,即可获取大量优质电子书和一份Java高级架构资料、Spr...

2022-11-03 05:30:30查看全文 >>

线程池内部结构和实现原理(线程池的底层原理和实现方法)

线程池内部结构和实现原理(线程池的底层原理和实现方法)

线程池的基本结构线程池的基本结构,如下图所示。用户通过使用线程池的execute方法将Runnable提交到线程池中进行...

2022-11-03 05:39:37查看全文 >>

线程池的拒绝策略(线程池拒绝策略有哪些)

线程池的拒绝策略(线程池拒绝策略有哪些)

jdk1.5版本新增了 JUC 并发包,其中一个包含线程池。四种拒绝策略:拒绝策略类型说明1ThreadPoolExec...

2022-11-03 06:05:44查看全文 >>

文档排行