Java_线程池_ExecutorService_newFixedThreadPool(固定线程个数)_execute(new Runnable())

2023-05-16

/*
         * 线程池:一堆线程装在某个容器里,等着来运行
         *         一个线程池维护着很多线程,也维护着一个待执行任务队列,还维护着一个结束的任务队列
         *         
         *
         * ExecutorService:一个接口,可以往这里面扔任务,Java的线程池都实现了ExecutorService接口
         *         --executor方法执行Runnable任务,不需要返回值
         *         --submit方法可以执行那些有返回值的,也可以执行没有返回值的
         *
         * Executors:有一些工厂方法,产生线程池
         * newFixedThreadPool:创建个数为5的线程池,是一个固定个数的线程池,有五个线程,返回ExecutorService
  */

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

public class ThreadPool_value {
    public static void main(String[] args) throws InterruptedException {
	/*
	 * 线程池:一堆线程装在某个容器里,等着来运行
	 *一个线程池维护着很多线程,也维护着一个待执行任务队列,还维护着一个结束的任务队列
	 * 		
	 * ExecutorService:
         * 一个接口,可以往这里面扔任务,Java的线程池都实现了ExecutorService接口
	 *    --executor方法执行Runnable任务,不需要返回值
	 *    --submit方法可以执行那些有返回值的,也可以执行没有返回值的
	 * 
	 * Executors:有一些工厂方法,产生线程池
	 * newFixedThreadPool:创建个数为5的线程池,是一个固定个数的线程池,有五个线程,返回ExecutorService
	 */
	ExecutorService service=Executors.newFixedThreadPool(5);
		
	/*
	 * 往线程池扔6个任务,但只有5个线程,即有一个线程要处理掉两个任务
	 */
	for(int i=0;i<6;i++){
	    service.execute(new Runnable() {  //execute执行任务,自动调用run方法
	        public void run() {
		    try {
			TimeUnit.MILLISECONDS.sleep(500); //睡500毫秒
		    } catch (InterruptedException e) {
			e.printStackTrace();
		    }
		    System.out.println(Thread.currentThread().getName());
		}
	    });
	}
	System.out.println(service);
		
	service.shutdown(); //关闭线程池,正常关闭,等着所有的任务执行完才关闭
	//service.shutdownNow(); 直接关闭,不管任务是否处理完
		
	/*
         *一些方法可以探测是否关闭
         */
        //false.代表所有的任务是否都执行完了,因为睡500毫秒,显然没有执行完
	System.out.println(service.isTerminated()); 
        //是不是关闭了,是的关闭了,但是不代表任务执行完了
	System.out.println(service.isShutdown()); 
	System.out.println(service); //任务没有执行完,状态是正在关闭中
		
	TimeUnit.SECONDS.sleep(5); //主线程睡了5秒钟,线程池中的线程已经处理完任务
	System.out.println(service.isTerminated()); //true
	System.out.println(service.isShutdown()); //true
	System.out.println(service);
    }
}






 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java_线程池_ExecutorService_newFixedThreadPool(固定线程个数)_execute(new Runnable()) 的相关文章

  • ffmpeg命令行使用

    查看视频信息 ffmpeg i 视频名字 视频名字这里输入前几个字符按 tab 键可以自动补全 返回结果 xff1a 红框之内的内容没什么用 编码器 xff1a encoder Lavf57 25 100 持续时间 xff1a Durati
  • 基于JAVA的志愿者管理系统(最新)

    个人毕业设计 xff0c 喜欢的私聊 目录 基于JAVA的志愿者管理系统 3 专业 xff1a 学号 xff1a 学生姓名 xff1a 指导老师 xff1a 3 1 引言 4 1 1 项目开发的背景 4 1 2本文的主要工作 5 1 3本课
  • 追风筝的人:变质的友谊

    每个人心中都有一段不可言说的故事 在我们的岁月里 xff0c 那些朋友玩伴早已经消失在了我们的生活之中 但是那些共同的记忆还保留在我们的心中 追风筝的人 这是一本描述友谊的书籍 xff0c 能够给我们的心灵带来一丝的慰籍 哈桑在一次逃避中
  • 题目:判断101-200之间有多少个素数,并输出所有素数。

    题目 xff1a 判断101 200之间有多少个素数 xff0c 并输出所有素数 分析 xff1a 不能被2整除的称为质数 错解 xff1a for int i 61 101 i lt 61 200 i 43 43 if i 2 61 0
  • iOS总结

    1 设置UILabel行间距 NSMutableAttributedString attrString 61 NSMutableAttributedString alloc initWithString label text NSMutab
  • 最大公约数

    题目 xff1a 输入两个正整数m和n xff0c 求其最大公约数 分析 使用辗转相除法 竞相减损法 比如36和24的最大公约数是12 36 24 61 12 24 12 61 0 xff1b 所以12是36和24的最大公约数 比如48和3
  • SpringMVC中可以判断Controller中传来的参数是否为空方法

    package org swinglife controller import org springframework stereotype Controller import org springframework web bind an
  • HashMap的简单使用之remove的使用(三)

    remove方法可以删除其中的属性值
  • 新手最应该看的Mybatis中xml的分页查询sql语句

    研究了一整天 xff0c 终于弄明白了 Mybatis中 xml 的分页查询 sql 语句 xff1a lt 根据页数进行排序 gt lt select id 61 34 selectStudentByMap 34 resultType 6
  • 王昕的 java 下Excel的导入和导出,数据校验

    Apache POI是Apache开发的开源的跨平台的 Java API xff0c 提供API给Java程序对Microsoft Office格式档案进行各种操作 POI中Excel操作很简单 xff0c 主要类有 HSSFWorkboo
  • ModuleNotFoundError: No module named 'urllib2'

    历尽千辛万苦 xff0c 终于在Eclipse上安装好了python的编译工具了 https blog csdn net zrcshendustudy article details 82120397 正准备来一个爬虫程序入门的时候 xff
  • AttributeError: module 'pip' has no attribute 'pep425tags'

    情境再现 xff1a AttributeError module 39 pip 39 has no attribute 39 pep425tags 39 分析问题 xff1a 百度可知是Win32和Win64的输入命令各有所不同 解决问题
  • maven中的pom导入jackson包存在的问题,miss the jar

    情境再现 xff1a 之前导Jackson包的时候 xff0c 一直在dependency处有个错号 xff0c 我之前导的是2 6 0版本 分析问题 xff1a 网上好多说是maven文件没有删除的问题 后来看到有人导了不一样的版本 xf
  • java求完数的三种方法

    package al 64 author zhangrichao 64 version 创建时间 xff1a 2019年1月6日 下午8 55 34 求完数 第一种方法 xff1a 减法方式 public class PerfectNumb
  • 用java实现快速排序算法

    第一种方法 xff1a xff08 从数组右边开始 xff09 1 选择一个比较值c xff0c 以数组的第一个为例 2 从右边开始查找比c小的值 xff0c 再从左边开始查找比c大的值 xff0c 进行互换 3 当左边和右边同时指向一个值
  • Spring MVC常用注解

    一 Spring MVC 常用注解 1 64 RequestMapping Spring MVC 通过 64 RequestMapping 注解将 URL 请求与业务方法进行映射 xff0c 在控制器的类定义处以及方法定义处都可以添加 64
  • 字符串通配符(递归)

    题目描述 问题描述 xff1a 在计算机中 xff0c 通配符一种特殊语法 xff0c 广泛应用于文件搜索 数据库 正则表达式等领域 现要求各位实现字符串通配符的算法 要求 xff1a 实现如下2个通配符 xff1a xff1a 匹配0个或
  • 数据结构 实验报告01

    一 实验目的和要求 完成尽可能多的数据排序 xff0c 并显示运行时间 二 实验环境 编译器 xff1a Vscode DevC 43 43 系统 xff1a Windows10 CPU xff1a i5 8265U 64 1 60GHz
  • eclipse中java代码自动补全设置

    下面介绍一个eclipse自动补全的设置1 在eclipse页面 xff0c 点击顶部的Window选项选择进入Preferences选项 xff1a 2 点击java gt Editor gt Content Assist选项 xff1a
  • Java两种方法去除字符串末尾的数字

    问题 xff1a 如何去除这个字符串中末尾的数字 xff1a sdf12 432fdsf gfdf32 xff1f 这个问题的解决关键是要先把字符串进行反转操作 方法一 xff1a public static String removeNu

随机推荐