Executor类
//测试的线程
public class Record implements Runnable {
public int countDown = 10;
private static int taskCount = 0;
private final int id = taskCount++;
public Record() {
};
public Record(int countDown) {
this.countDown = countDown;
}
public String status() {
return "#" + id + "(" + countDown + "),";
}
@Override
public void run() {
while(countDown-- > 0 ){
System.out.print(status());
Thread.yield();
}
}
}
=====================main===================
一、CachedThreadPool 执行类
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import com.harry.handler.Record;
public class CachedThreadPoolDemo {
public static void main(String[] args) {
//会不断的创建线程,当有已经完成任务的线程出现时会复用原来的线程。
ExecutorService executor = Executors.newCachedThreadPool();
for (int i = 0; i < 5; i++) {
executor.execute(new Record());
}
executor.shutdown();
}
}
二、FixedThreadPool 执行类
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import com.harry.handler.Record;
public class FixedThreadPoolDemo {
public static void main(String[] args) {
//首先要设置规定的线程数量。
ExecutorService exec = Executors.newFixedThreadPool(5);
for (int i = 0; i < 5; i++) {
exec.execute(new Record());
}
exec.shutdown();
}
}
三、SingleThreadPool 执行类
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import com.harry.handler.Record;
public class SingleThreadExecutorDemo {
public static void main(String[] args) {
//相当于线程数量为1的 FixedThreadPool
//如果singleThreadEcecutor提交多个任务。那么这些任务会排队,
//每个任务都会在下一个任务执行之前运行介绍,所有的任务都共用一个线程。
ExecutorService exec = Executors.newSingleThreadExecutor();
for (int i = 0; i < 5; i++) {
exec.execute(new Record());
}
exec.shutdown();
}
}
Executor类的更多相关文章
- MyBatis 源码分析——SqlSession接口和Executor类
mybatis框架在操作数据的时候,离不开SqlSession接口实例类的作用.可以说SqlSession接口实例是开发过程中打交道最多的一个类.即是DefaultSqlSession类.如果笔者记得 ...
- 通过Thread Pool Executor类解析线程池执行任务的核心流程
摘要:ThreadPoolExecutor是Java线程池中最核心的类之一,它能够保证线程池按照正常的业务逻辑执行任务,并通过原子方式更新线程池每个阶段的状态. 本文分享自华为云社区<[高并发] ...
- 转: Executor类
Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,Completion ...
- 【并发编程】Executor类的继承结构
来自为知笔记(Wiz)
- Spark源码学习1.6——Executor.scala
Executor.scala 一.Executor类 首先判断本地性,获取slaves的host name(不是IP或者host: port),匹配运行环境为集群或者本地.如果不是本地执行,需要启动一 ...
- Java线程池的原理及几类线程池的介绍
刚刚研究了一下线程池,如果有不足之处,请大家不吝赐教,大家共同学习.共同交流. 在什么情况下使用线程池? 单个任务处理的时间比较短 将需处理的任务的数量大 使用线程池的好处: 减少在创建和销毁线程上所 ...
- 多线程之线程池Executor应用
JDK1.5之后,提供了自带的线程池,以便我们更好的处理线程并发问题. Executor类给我提供了多个线程池创建的方式: 创建固定的线程池 Executors.newFixedThreadPool( ...
- java并发编程框架 Executor ExecutorService invokeall
首先介绍两个重要的接口,Executor和ExecutorService,定义如下: public interface Executor { void execute(Runnable command ...
- Java线程池 Executor框架概述
线程池的意义 循环利用线程资源,避免重复创建和销毁线程 线程池的任务是异步执行的,只要提交完成就能快速返回,可以提高应用响应性 Java线程池还有一个很重要的意义:Java线程池就是JDK 5 推出的 ...
随机推荐
- vscode实现远程linux服务器上Python开发
最近需要训练一个生成对抗网络模型,然后开发接口,不得不在一台有显卡的远程linux服务器上进行,所以,趁着这个机会研究了下怎么使用vscode来进行远程开发. 1 配置免密登录¶ (1)在 ...
- # Maven:Could not transfer artifact org.springframework:spring-webmvc:pom:。。。(系统找不到文件),从网上clone到本地的项目报红
解决办法: 确保maven配置正确,在maven的setting.xml配置文件中, 配置本地仓库路径 <localRepository>D:\Maven\文件名</localRep ...
- sqlserver with(NOLOCK) 或 with(READPAST)
https://blog.csdn.net/shuicaohui5/article/details/6758868
- 基于CPU版本的Caffe推理框架
最近一段时间,认真研究了一下caffe.但是,里面内容过多,集合了CPU版本和GPU版本的代码,导致阅读起来有些复杂.因此,特意对caffe代码进行了重构,搭建一个基于CPU版本的Caffe推理框架. ...
- subString引起的index out of range
特别注意!!!低级坑 subString(begin,end) subList()均存在这个问题. 当end>String.size(),则index out of range!!!
- 怎样禁止Ceph OSD的自动挂载
前言 本篇来源于群里一个人的问题,有没有办法让ceph的磁盘不自动挂载,一般人的问题都是怎样让ceph能够自动挂载,在centos 7 平台下 ceph jewel版本以后都是有自动挂载的处理的,这个 ...
- RBD快速删除的方法分析与改进
前言 这个问题在很久以前就有一篇文章进行过讨论 remove-big-rbd,这个文章写的比较清楚了,并且对不同的方法做了分析,这里先把结论说下 rbd类型 rbd rm 方法 rados -p rm ...
- vue路由参数的获取、添加和替换
获取路由参数 getUrlKey(name){//获取url 参数 return decodeURIComponent((new RegExp('[?|&]'+name+'='+'([^&am ...
- IDEA创建WebService服务端与客户端
创建服务端 一.file–>new–>project 二.点击next后输入服务端名,点击finish,生成目录如下 三.在 HelloWorld.Java 文件中右击,选 Tools 的 ...
- MathType如何打出带圆圈的点
学习了圆的知识后,知道可以用带圆圈的点表示圆,比如"⊙O"表示圆O,即圆心为O的圆.那么要怎么在MathType中打出带圆圈的点? 方法一.直接在工具栏上选择输入 打开MathTy ...