java8线程池创建并使用
1、创建
@Configuration
public class ThreadPoolConfig {
/**
* 创建线程池
*/
@Bean(name = "threadPool")
public ThreadPoolTaskExecutor creatPool(){
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(16); // 核心线程数目
executor.setMaxPoolSize(64); // 指定最大线程数
executor.setQueueCapacity(320); // 队列中最大的数目
executor.setThreadNamePrefix("taskThreadPool_"); // 线程名称前缀
// rejection-policy:当pool已经达到max size的时候,如何处理新任务
// CALLER_RUNS:不在新线程中执行任务,而是由调用者所在的线程来执行
// 对拒绝task的处理策略
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
executor.setKeepAliveSeconds(60); // 线程空闲后的最大存活时间
executor.initialize();
return executor;
}
}
2、使用
@Resource(name = "threadPool")
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
@Test
void jiecTest(){
threadPoolTaskExecutor.execute(()->{
for(int i=1;i<=200;i++){
System.out.println("线线程1:"+i);
}
});
threadPoolTaskExecutor.execute(()->{
for(int i=200;i>0;i--){
System.out.println("线线程2:"+i);
}
});
}
3、提交任务
无返回值的任务使用execute(Runnable)
有返回值的任务使用submit(Runnable)
java8线程池创建并使用的更多相关文章
- Java8线程池ThreadPoolExecutor底层原理及其源码解析
小侃一下 日常开发中, 或许不会直接new线程或线程池, 但这些线程相关的基础或思想是非常重要的, 参考林迪效应; 就算没有直接用到, 可能间接也用到了类似的思想或原理, 例如tomcat, jett ...
- Python 之简单线程池创建
try: from Queue import Queue, Empty except: from queue import Queue, Empty import threading import t ...
- JDBC线程池创建与DBCP源码阅读
创建数据库连接是一个比较消耗性能的操作,同时在并发量较大的情况下创建过多的连接对服务器形成巨大的压力.对于资源的频繁分配﹑释放所造成的问题,使用连接池技术是一种比较好的解决方式. 在Java中,连接池 ...
- Java队列——线程池创建的例子
线程池为线程生命周期开销问题和资源不足问题提供了解决方案.通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上.其好处是,因为在请求到达时线程已经存在,所以无意中也消除了线程创建所带来的延迟.这 ...
- java中线程池创建的几种方式
java中创建线程池的方式一般有两种: 通过Executors工厂方法创建 通过new ThreadPoolExecutor(int corePoolSize, int maximumPoolSize ...
- C#使用线程池创建线程
using System; using System.Threading; public class Example { public static void Main() { // Queue th ...
- ThreadPoolExecutor – Java Thread Pool Example(java线程池创建和使用)
Java thread pool manages the pool of worker threads, it contains a queue that keeps tasks waiting to ...
- 使用Callable接口创建线程和使用线程池的方式创建线程
1.使用Callable接口的方式实现多线程,这是JDK5.0新增的一种创建多线程的方法 package com.baozi.java2; import java.util.concurrent.Ca ...
- Java多线程01(Thread类、线程创建、线程池)
Java多线程(Thread类.线程创建.线程池) 第一章 多线程 1.1 多线程介绍 1.1.1 基本概念 进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于 ...
- java线程池之一:创建线程池的方法
在Java开发过程中经常需要用到线程,为了减少资源的开销,提高系统性能,Java提供了线程池,即事先创建好线程,如果需要使用从池中取即可,Java中创建线程池有以下的方式, 1.使用ThreadPoo ...
随机推荐
- 【Python】bytes和hex字符串之间的相互转换
十六进制字符串:a="CC DD 01 61 F6 01 00 64 A4 81 00 00 00 8B" b=bytes.fromhex(a) 转为字节 from socket ...
- JSP第十次作业
1.实现 删除 回复邮件2.实现阅读邮件功能:在main.jsp中点击任意邮件的标题,进入到detail.jsp显示邮件详情,包括发件人,主题,内容,时间.同时需要把邮件状态修改为已读. com.gd ...
- Three.js 进阶之旅:物理效果-碰撞和声音 💥
摘要 本文内容主要汇总如何在 Three.js 创建的 3D 世界中添加物理效果,使其更加真实.所谓物理效果指的是对象会有重力,它们可以相互碰撞,施加力之后可以移动,而且通过铰链和滑块还可以在移动过程 ...
- npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
出现问题原因: vscode运行前端命令,没有为安装的npm配置环境变量 解决办法: 配置环境变量,可查看前一篇文章nodejs 环境变量配置 配置完后还出如题原因: 重新启动vscode终端powe ...
- 利用ICSharpCode.SharpZipLib.dll解析 出错:“Wrong Local header signature: 0xFF8”
分析原因 利用ICSharpCode.SharpZipLib.dll解析APK时,进入APK的AndroidXml获取时出现报错 出错代码 using (ICSharpCode.SharpZipLib ...
- Rainbond ubuntu20.04单主机(allinone)部署及简单应用构建
1.Rainbond是什么? Rainbond 是一个云原生应用管理平台,使用简单,不需要懂容器.Kubernetes和底层复杂技术,支持管理多个Kubernetes集群,和管理企业应用全生命周期. ...
- Centos7下areaDetector IOC的编译
准备: Centos7ministall的系统: root权限下: yum install -y epel-release yum install -y git wget gcc gcc-c++ au ...
- yaml文件详解
一.yaml文件详解 前言 Kubernetes 支持 YAML 和 JSON 格式管理资源对象JSON 格式:主要用于 api 接口之间消息的传递YAML 格式:用于配置和管理,YAML 是一种简洁 ...
- CF1638E Colorful Operations
\(\text{Solution}\) \(\text{code}\) #include <cstdio> #include <iostream> #include <s ...
- 设备区分判断IPAD,H5,PC
HTML: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...