java 线程池简单例子
package com.hra.riskprice; import com.hra.riskprice.SysEnum.Factor_Type;
import com.hra.riskprice.pojo.RskFactor;
import com.hra.riskprice.service.impl.RskFactorBulkMapper;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.util.*;
import java.util.concurrent.*; @SpringBootApplication
public class RiskpriceApplication { public static void main(String[] args) throws InterruptedException, ExecutionException{
new RiskpriceApplication().exec();
} void exec() throws InterruptedException, ExecutionException {
int xy=;
//进行异步任务列表
List<FutureTask<Integer>> futureTasks = new ArrayList<FutureTask<Integer>>();
//线程池 初始化十个线程 和JDBC连接池是一个意思 实现重用
ExecutorService executorService = Executors.newFixedThreadPool();
long start = System.currentTimeMillis();
int jj=;
//类似与run方法的实现 Callable是一个接口,在call中手写逻辑代码
Callable<Integer> callable = new Callable<Integer>(){ @Override
public Integer call() throws Exception {
//System.out.println("任务执行 is "+jj1+"个");
Integer res = new Random().nextInt();
Thread.sleep();
System.out.println("任务执行:获取到结果 :"+res);
return res;
}
}; for(int i=;i<;i++){ //创建一个异步任务
FutureTask<Integer> futureTask = new FutureTask<Integer>(callable);
jj=i;
futureTasks.add(futureTask);
//提交异步任务到线程池,让线程池管理任务 特爽把。
//由于是异步并行任务,所以这里并不会阻塞
executorService.submit(futureTask);
} int count = ;
for (FutureTask<Integer> futureTask : futureTasks) {
//futureTask.get() 得到我们想要的结果
//该方法有一个重载get(long timeout, TimeUnit unit) 第一个参数为最大等待时间,第二个为时间的单位
count+= futureTask.get();
}
long end = System.currentTimeMillis();
System.out.println("线程池的任务全部完成:结果为:"+count+",main线程关闭,进行线程的清理");
System.out.println("使用时间:"+(end-start)+"ms");
//清理线程池
executorService.shutdown(); }
}
java 线程池简单例子的更多相关文章
- Java 多线程编程之九:使用 Executors 和 ThreadPoolExecutor 实现的 Java 线程池的例子
线程池用来管理工作线程的数量,它持有一个等待被执行的线程的队列. java.util.concurrent.Executors 提供了 java.util.concurrent.Exe ...
- 这么说吧,java线程池的实现原理其实很简单
好处 : 线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,合理的使用线程池对线程进行统一分配.调优和监控,有以下好处: 1.降低资源消耗: 2.提高响应速度: 3.提高线 ...
- Java ExecutorService四种线程池的例子与说明
1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() { @Override public void run() { ...
- Java 1.ExecutorService四种线程池的例子与说明
1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() { @Override public void run() { ...
- Java ExecutorService四种线程池的例子与说明(转发)
1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() { @Override public void run() { ...
- Java线程池使用说明
Java线程池使用说明 转自:http://blog.csdn.net/sd0902/article/details/8395677 一简介 线程的使用在java中占有极其重要的地位,在jdk1.4极 ...
- Java线程池的几种实现 及 常见问题讲解
工作中,经常会涉及到线程.比如有些任务,经常会交与线程去异步执行.抑或服务端程序为每个请求单独建立一个线程处理任务.线程之外的,比如我们用的数据库连接.这些创建销毁或者打开关闭的操作,非常影响系统性能 ...
- Java线程池的原理及几类线程池的介绍
刚刚研究了一下线程池,如果有不足之处,请大家不吝赐教,大家共同学习.共同交流. 在什么情况下使用线程池? 单个任务处理的时间比较短 将需处理的任务的数量大 使用线程池的好处: 减少在创建和销毁线程上所 ...
- [转 ]-- Java线程池使用说明
Java线程池使用说明 原文地址:http://blog.csdn.net/sd0902/article/details/8395677 一简介 线程的使用在java中占有极其重要的地位,在jdk1. ...
随机推荐
- How to load custom styles at runtime (不会翻译,只有抄了 )
原文 :http://blogs.embarcadero.com/sarinadupont/2013/10/16/how-to-load-custom-styles-at-runtime/ How t ...
- python文件打开方式详解——a、a+、r+、w+区别
出处: http://blog.csdn.net/ztf312/ 第一步 排除文件打开方式错误: r只读,r+读写,不创建 w新建只写,w+新建读写,二者都会将文件内容清零 (以w方式打开,不能读出. ...
- C++Primer第五版——习题答案详解(九)
习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第10章 泛型算法 练习10.1 #include<iostream> #i ...
- 地图api
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- how find out what is causing Visual Studio to think each project is out of date
You can find out what is causing Visual Studio to think each project is out of date, and then addres ...
- Maven私服(Nexus)资源上传下载
1.settings.xml (向私服上传资源需要) <!-- Snapshot包的管理/Releases包的管理/第三方包管理--> <server> <id>l ...
- leetcode114
class Solution { public: void flatten(TreeNode* root) { while(root){ if(root->left){ TreeNode* pr ...
- leetcode146
public class LRUCache { ; ; long sernumbers; long SerNumbers { get { if (sernumbers <= long.MaxVa ...
- Mybatis Generator 生成的mapper只有insert方法
一般有两种情况 第一种是配置问题可以参考博客 http://blog.csdn.net/angel_xiaa/article/details/52474022 第二种是mysql-connector- ...
- [Shell]Bash变量:自定义变量 & 环境变量 & 位置参数变量 & 预定义变量
--------------------------------------------------------------------------------- 变量是计算机内存的单元,其中存放的值 ...