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…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ORACLE游标(oracle游标属性)

    ORACLE游标(oracle游标属性)文章目录1概述1.1思维导图2语法2.1基本写法(4步)2.2游标4大属性3分类3.1静态游标3.1.1隐式游标dml3.1.2显式游标cursor3.2动态游标3.2.1自定义类型refcursor3.2.2系统类型sys_refcursor4扩展4.1三种游标循环效率对比4.2实例:实际开发中,游标遍历数据1概述1.游标是什么?用来存储多条查询数据的一种数据结构(’结果集’),它有一个’指针’,从上往下移动(’fetch’),从而能够’

    2022年4月18日
    87
  • &0xff的原因

    &0xff的原因&0xff的目的

    2022年6月19日
    25
  • eBPF 介绍_bcp方案是什么意思

    eBPF 介绍_bcp方案是什么意思eBPF介绍Tcpdump是Linux平台常用的网络数据包抓取及分析工具,tcpdump主要通过libpcap实现,而libpcap就是基于eBPF。先介绍BPF(BerkeleyPacketFilter),BPF是基于寄存器虚拟机实现的,支持JIT(Just-In-Time),比基于栈实现的性能高很多。它能载入用户态代码并且在内核环境下运行,内核提供BPF相关的接口,用户可以将代码编译成字节码,通过BPF接口加载到BPF虚拟机中,当然用户代码跑在内核环境中是有风险的

    2022年9月21日
    2
  • linux下yum命令出现Loaded plugins: fastestmirror

    linux下yum命令出现Loaded plugins: fastestmirror

    2021年10月8日
    64
  • QGIS使用入门

    QGIS使用入门最近工作需要,要做一些关于QGIS的地图验证工作,这里就记录一下我的学习步骤和问题。1:首先下载QGIShttps://qgis.org/en/site/forusers/download.html我这里使用的是3.4版本的2:安装完毕后会生成好几个快捷方式,我们使用的是3:打开后整体界面4:添加在线地图高德地址:https://webst01.i…

    2022年6月15日
    82
  • 【矩阵乘】【NOI 2012】【cogs963】随机数生成器

    【矩阵乘】【NOI 2012】【cogs963】随机数生成器

    2022年1月22日
    57

发表回复

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

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