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


相关推荐

  • 解译CWnd::ModifyStyleEx「建议收藏」

    解译CWnd::ModifyStyleEx「建议收藏」Callthismemberfunctiontomodifyawindow’sextendedstyle.修改窗口扩展属性。都有哪些扩展属性?基本属性呐?BOOLModifyStyleEx(DWORDdwRemove,DWORD

    2022年7月19日
    14
  • linux的grep命令详解_grep -v命令

    linux的grep命令详解_grep -v命令文章目录一、grep常用命令1、语法2、范例二、grep的一些高级参数1、语法2、范例三、基础正则表达式练习1、与中括号`[]`结合2、与反向选择^结合使用3、与行首`^`和行尾$字符结合4、任意一个字符`.`与重复字符`*`5、`{}`限定连续字符范围一、grep常用命令grep的功能是分析一行信息,若其中有我们所需要的信息,就将其拿出来。需要注意的是它以整行为单位…

    2022年8月30日
    0
  • Java 二维数组的初始化

    Java 二维数组的初始化关于Java二维数组的初始化

    2022年5月21日
    45
  • 国内机床企业名录

    国内机床企业名录珠江机床有限公司北京第三机床厂北京市机电研究院北京市华德液压泵厂机床厂北京市仪表机床厂北京市电加工机床厂北京市电加工研究所北京阿奇工业电子有限公司中国航天工业总公司二八四厂(北京长峰机械动力厂)北京机床研究所北京良乡锻压机床厂北京市京良机械制造有限公司北京长空机械公司北京北方车辆制造厂十五分厂北京机电研究所北京工业大学科技开发管理部(数控机床配件研究所)北京光电量仪研究中心北京工大光电机械厂北京液

    2022年6月30日
    77
  • pi可以卸载重新安装吗_pip删除安装包

    pi可以卸载重新安装吗_pip删除安装包打开python安装目录下的Scripts文件夹,在空白处shift+鼠标右键,选择在此处打开命令窗口,在弹出的窗口中执行命令easy_install.exepip即可。如果python安装目录下的Scripts目录中有没有easy_install.exe参见http://blog.csdn.net/la6nf/article/details/7…

    2022年10月19日
    0
  • mybatisplus整合springboot(Springboot框架)

    记得刚接触SpringBoot时,大吃一惊,世界上居然还有这么省事的框架,立马感叹:SpringBoot是世界上最好的框架。哈哈!当初跟着教程练习搭建了一个框架,传送门:springboot+jpa+bootstrap+thymeleaf简单的增删改查Demo后来进了新公司,用不到而且忙于任务,今天重温一遍居然有些忘了,看来真是好记性不如烂笔头。于是写下本篇SpringBo…

    2022年4月18日
    97

发表回复

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

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