java编程executor框架_Java并发编程 - Executor框架(一)Executor,
1、并发编程的一种编程方式是把任务拆分为一些列的小任务,即Runnable,然后将这些任务提交给一个Executor执行, Executor.execute(Runnalbe) 。Executor在执行时使用其内部的线程池来完成操作。
Executor的子接口有:ExecutorService,ScheduledExecutorService,已知实现类:AbstractExecutorService,ScheduledThreadPoolExecutor,ThreadPoolExecutor。
2、Executor属于public类型的接口。可以用于提交,管理或者执行Runnable任务。实现Executor接口的class还可以控制Runnable任务执行线程的具体细节。包括线程使用的细节、调度等。一般来说,Runnable任务开辟在新线程中的使用方法为:new Thread(new (RunnableTask())).start()
3、但在Executor中,可以使用Executor而不用显示地创建线程。例如,可以使用以下方法创建线程,而不是像第2点中为一种任务中的每个任务都调用new Thread(...)的方法。
Exectuor executor = anExecutor();executor.execute(new RunnableTask()); // 异步执行executor.execute(new RunnableTask());
4、但是,Executor接口并没有严格地要求执行必须是异步/同步的,一切都相当自由。在最简单的情况下,执行程序可以在调用者的线程中立即运行已提交的任务,
class DirectExecutor implements Executor { public void execute(Runnable r) {r.run(); }}
更常见的是,任务在某个不是调用者线程的线程中执行的。如在另一个线程中启动:
class ThreadPerTaskExecutor implements Executor { public void execute(Runnable r) {new Thread(r).start();}}
也可以在实现中用另一个Executor来序列化执行过程:
class SerialExecutor implements Executor {final Queue tasks = new ArrayDeque();final Executor executor;Runnable active;SerialExecutor(Executor executor) {this.executor = executor;}public synchronized void execute(final Runnable r) {tasks.offer(new Runnable() {public void run() {try {r.run();} finally {scheduleNext();}}});if (active == null) {scheduleNext();}}protected synchronized void scheduleNext() {if ((active = tasks.poll()) != null) {executor.execute(active);}}}
5、ThreadPoolExecutor类提供了一个可供可扩展的线程池实现。Executors类为Executor接口及其实现提供了便捷的工厂方法。
6、 Executor中的方法execute。void execute(Runnable command)表示在未来的某个时间执行给定的命令。该命令可能在新的线程、已经入池的线程或者正在调用的线程中执行。
java编程executor框架_Java并发编程 - Executor框架(一)Executor,相关推荐
- java executor 异步_Java并发编程11-异步执行框架Executor
1 Executor框架的简介 1.5后引入的Executor框架的最大优点是把任务的提交和执行解耦.要执行任务的人只需把Task描述清楚,然后提交即可.这个Task是怎么被执行的,被谁执行的,什么时 ...
- java中解决脏读_java并发编程学习之脏读代码示例及处理
使用interrupt()中断线程 当一个线程运行时,另一个线程可以调用对应的Thread对象的interrupt()方法来中断它,该方法只是在目标线程中设置一个标志,表示它已经被中断,并立即 ...
- java并发编程代码示例_java并发编程之同步器代码示例
java并发编程之同步器代码示例 发布时间:2020-09-08 16:53:41 来源:脚本之家 阅读:58 作者:Blessing_H 同步器是一些使线程能够等待另一个线程的对象,允许它们协调动作 ...
- java 共享锁 独占锁_Java并发编程锁之独占公平锁与非公平锁比较
Java并发编程锁之独占公平锁与非公平锁比较 公平锁和非公平锁理解: 在上一篇文章中,我们知道了非公平锁.其实Java中还存在着公平锁呢.公平二字怎么理解呢?和我们现实理解是一样的.大家取排队本着先来 ...
- java等待5秒_Java并发编程-主线程等待子线程解决方案
主线程等待所有子线程执行完成之后,再继续往下执行的解决方案 public class TestThread extends Thread { public void run() { System.ou ...
- java 关闭守护线程_Java并发编程之线程生命周期、守护线程、优先级、关闭和join、sleep、yield、interrupt...
Java并发编程中,其中一个难点是对线程生命周期的理解,和多种线程控制方法.线程沟通方法的灵活运用.这些方法和概念之间彼此联系紧密,共同构成了Java并发编程基石之一. Java线程的生命周期 Jav ...
- java线程本地变量_Java并发编程示例(九):本地线程变量的使用
这篇文章主要介绍了Java并发编程示例(九):本地线程变量的使用,有时,我们更希望能在线程内单独使用,而不和其他使用同一对象启动的线程共享,Java并发接口提供了一种很清晰的机制来满足此需求,该机制称 ...
- java程序使用异步总线_JAVA并发编程基础
CPU核心 核心(Die)又称为内核,是CPU最重要的组成部分.CPU中心那块隆起的芯片就是核心,是由单晶硅以一定的生产工艺制造出来的,CPU所有的计算.接受/存储命令.处理数据都由核心执行.各种CP ...
- java执行器是什么_Java 并发编程:任务执行器 Executor 接口
任务执行器(Executor)是一个接口,位于java.util.concurrent包下,它的作用主要是为我们提供任务与执行机制(包括线程使用和调度细节)之间的解耦.比如我们定义了一个任务,我们是通 ...
最新文章
- 一个mongosee例子
- Contact Bubble View
- Java B2B2C o2o多用户商城 springcloud架构 (六)分布式配置中心(Spring Cloud Config)
- 如何在大学和工作后让自己逐渐变强?
- HashSet、TreeSet、TreeMap实现原理
- 最小生成树(普里姆算法【Prim】与克鲁斯卡尔算法【Kruskal】)
- js构造函数的浅薄理解
- 疯狂连连看之加载界面的图片
- ubuntu上下左右变成BD
- 软文诊断50期: 百度账号有什么推广功能?能编辑软文吗?
- 用CSS美化表格【前端知识】
- 官宣 .NET RC 2
- Python 转义字符(含用法)
- SAS用proc means和proc univariate求数据的样本均值、中位数、四分位数、样本方差、极差、变异系数、二阶、三阶和四阶中心矩、偏度、峰度、标准差和对数据进行正态性检验
- 网盘有哪些?网盘哪个好用?
- wifi文件服务器地址,wifi是服务器地址
- 1.4 面向对象编程中级 对象的继承与super关键字-跟着韩老师学JavaSE
- Creo 4.0 软件安装教程
- Eclipse开发Android的安装配置。
- 西方金融交易员揭露行业潜规则
热门文章
- 告别传统商务海报版式|绚丽色彩的你,感觉更具现代与活力
- websocket python unity_Unity中Websocket的简单使用
- RFC 8998: ShangMi (SM) Cipher Suites for TLS 1.3
- linux内核imx6,imx6ull之linux内核移植
- jquery请求后台数据(get请求)
- IDEA搭建一个简单的Javaweb项目(二)
- 关闭裁剪功能_SOLIDWORKS 2021 新增功能—3D CAD
- android 阻塞式函数,Android之PC浏览器上传表单格式大文件到手机客户端read函数阻塞问题...
- linux时间有几个,Linux下与文件相关的几个时间的介绍
- 深度限流装置是什么_集团公司首例零损耗深度限流装置顺利投运