executorservice等待线程池执行完毕_java线程池策略

executorservice等待线程池执行完毕_java线程池策略packagecom.aop8.testJava;importjava.util.ArrayList;importjava.util.List;importjava.util.concurrent.Callable;importjava.util.concurrent.ExecutionException;importjava.util.concurrent.Executo…


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一、Executor 线程池的体系UML图:

在这里插入图片描述

二、Executor 、ExecutorService 、ThreadPoolExecutor 等类的说明

1、线程池: 提供一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁的额外开销,提高了响应的速度。

2、线程池的体系结构:
java.util.concurrent.Executor 负责线程的使用和调度的根接口
		|--ExecutorService 子接口: 线程池的主要接口
				|--ThreadPoolExecutor 线程池的实现类
				|--ScheduledExceutorService 子接口: 负责线程的调度
					|--ScheduledThreadPoolExecutor : 继承ThreadPoolExecutor,实现了ScheduledExecutorService
			

3、工具类 : Executors
ExecutorService newFixedThreadPool() : 创建固定大小的线程池
ExecutorService newCachedThreadPool() : 缓存线程池,线程池的数量不固定,可以根据需求自动的更改数量。
ExecutorService newSingleThreadExecutor() : 创建单个线程池。 线程池中只有一个线程

ScheduledExecutorService newScheduledThreadPool() : 创建固定大小的线程,可以延迟或定时的执行任务

三、代码示例:

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class TestThreadPool { 
   

	public static void main(String[] args) throws InterruptedException, ExecutionException { 
   
		//1. 创建线程池
		ExecutorService pool = Executors.newFixedThreadPool(5);
		
		List<Future<Integer>> list=new ArrayList<Future<Integer>>();
		
		for (int i = 0; i < 10; i++) { 
   
			Future<Integer>  future=pool.submit(new Callable<Integer>() { 
   
				public Integer call() throws Exception { 
   
					int sum=0;
					for (int i = 0; i <=100; i++) { 
   
						sum+=i;
					}
					return sum;
				}
			});
			list.add(future);
		}
		
		pool.shutdown();
		
		for (Future<Integer> future : list) { 
   
			System.out.println(future.get());
		}		
		
// Future<Integer> future=pool.submit(new Callable<Integer>() { 
   
// public Integer call() throws Exception { 
   
// int sum=0;
// for (int i = 0; i <=100; i++) { 
   
// sum+=i;
// }
// return sum;
// }
// });
// System.out.println(future.get());
// pool.shutdown(); 
		
		
// ThreadPoolDemo threadPoolDemo=new ThreadPoolDemo();
// 
// //2. 为线程池中的线程分配任务
// for (int i = 0; i < 10; i++) { 
   
// pool.submit(threadPoolDemo);
// }
// 
// //3. 关闭线程池
// pool.shutdown();
// 
		
// new Thread(threadPoolDemo).start();
// new Thread(threadPoolDemo).start();
		
	}
}

class ThreadPoolDemo implements Runnable{ 
   

	private int i=0;
	
	public void run() { 
   
		while(i<=100){ 
   
			System.out.println(Thread.currentThread().getName()+" "+ i++);
		}
	}	
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195161.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • win10强制删除文件夹(“你需要来自XXX的权限才能对此文件夹进行更改”的解决方法)

    win10强制删除文件夹(“你需要来自XXX的权限才能对此文件夹进行更改”的解决方法)win10强制删除文件夹(“你需要来自XXX的权限才能对此文件夹进行更改”的解决方法)使用命令行方式删除文件夹(这是目前可行的方式)第一步:以管理员账户打开powershell第二步:定位到要删除的文件夹所在目录第三步:给要删除的文件夹赋本机管理员Administrator权限第四步:修改对文件/文件夹的访问权限(赋删除权限)第五步:强制删除文件使用命令行方式删除文件夹(这是目前可行的方式)第一步:以管理员账户打开powershell快捷键win+x调出如下界面,点击WindowsPowerS

    2022年5月29日
  • 转载:C/C++文件输入输出

    转载:C/C++文件输入输出

    2021年8月27日
  • 【C语言】的%*d、%.*s等详解:「建议收藏」

    目录:0.前言【精简版】:时间少的看这里:时间长的可以看我下面的啰嗦:1.必备入门小知识:2.正题1:scanf(1)%*d被枪毙了:(2)【%.*d】的队友被枪毙了:2.正题2:printf就不讲了,前面的【前言】似乎讲得很明白了吧。0.前言【精简版】:其实网上也有很多关于这方面的解释,但是总会让新手甚至小老手有些迷茫,比如网上有一种解释就说:忽略……你忽略啥啊你…时间少的看这里:<1>scanf:注意:在scanf里只有%*d和%.*d有意义,其他的%*f,%

    2022年4月11日
  • sql 日期格式汇总

    sql 日期格式汇总

    2021年11月26日
  • 卡盟货源对接_卡盟排行

    卡盟货源对接_卡盟排行最近,很多小伙伴们都在想搭建一个卡盟的主站,但是鉴于很多人都不太懂编程,也不知道如何找到源码。所以现在小编就为大家带来搭建卡盟主站教程,而且还把源码也一起送来了,想要搭建卡盟主站的话就记得一定要下载哦!搭建卡盟主站教程介绍1,完整无误经过校验的卡盟平台源码2,基于Ecshop内核的卡盟平台,游戏点卡销售的首选平台PHP+MYSQL3,前台模板已做深层SEO优化便于搜索引擎收录寻找卡盟源码1网…

    2022年8月12日
  • 2021年计算机保研-假211真双非三无的失败保研经历(武大/复旦/计算所/华科/同济/上交)

    2021年计算机保研-假211真双非三无的失败保研经历(武大/复旦/计算所/华科/同济/上交)从知乎@孤芳倚花红转过来啦~一、个人情况学校:华中地区211,计算机科学与技术(感觉华中211CS水平都差不多)。英语:CET4-534,预推免CET6-447。夏令营的时候没有六级真的太伤了,第一次裸考没过,第二次忘了报名,幸亏第三次考过了预推免可以用上。成绩:专业排名3/140,预推免2/147。211只有rk1和非rk1,非rk1≈没学上。科研:国家级、省级大创各一项,均是负责人,前者OD,后者SOD。没有论文,但是有一定CV和DL的基础,不惧面试。竞赛:省一及以上数学建模、数学竞赛奖项

    2022年7月25日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号