1 package bytezero.thread2;
2
3 import java.security.Provider;
4 import java.util.concurrent.ExecutorService;
5 import java.util.concurrent.Executors;
6 import java.util.concurrent.ThreadPoolExecutor;
7
8 /**
9 * 创建线程的方式四: 使用线程池
10 *
11 * 好处:
12 * 1.提高响应速度(减少了创建新线程的时间)
13 * 2.减低资源消耗(重复利用线程中线程,不需要每次创建)
14 * 3.便于线程管理
15 * corePoolSize:核心池的大小
16 * maximumPoolSize:最大线程数
17 * keepAliveTime:线程没有任务时最多保持多长时间后会终止
18 *
19 *
20 * ....
21 *
22 *
23 * 创建多线程有几种方式:
24 * 4种
25 *
26 * @author Bytezero1·zhenglei! Email:420498246@qq.com
27 * create 2021-10-18 18:55
28 */
29
30 class NumberThread implements Runnable{
31
32 @Override
33 public void run() {
34 for (int i = 0; i <100 ; i++) {
35 if(i % 2 == 0){
36 System.out.println(Thread.currentThread().getName()+":"+i);
37 }
38 }
39 }
40 }
41
42 class NumberThread1 implements Runnable{
43
44 @Override
45 public void run() {
46 for (int i = 0; i <100 ; i++) {
47 if(i % 2 != 0){
48 System.out.println(Thread.currentThread().getName()+":"+i);
49 }
50 }
51 }
52 }
53 public class ThreadPool {
54 public static void main(String[] args) {
55
56 //1.提供指定线程数量的线程池
57 ExecutorService service = Executors.newFixedThreadPool(10);
58 ThreadPoolExecutor serivce1 = (ThreadPoolExecutor)service;
59 //设置线程池的属性
60 // System.out.println(service.getClass()); //获取类的构造
61 serivce1.setCorePoolSize(15);
62 // serivce1.setKeepAliveTime();
63
64
65 //2.执行指定的线程操作,需要提供实现Runnable接口或Callable接口实现类的对象
66 service.execute(new NumberThread()); //适合适用于 Runnable
67 service.execute(new NumberThread1()); //适合适用于 Runnable
68
69 // service.submit(Callable callable ); //适合适用于 Callable
70
71 //3.关闭连接池
72 service.shutdown();
73 }
74 }

Java --- 多线程 创建线程的方式四: 使用线程池的更多相关文章

  1. Java之创建线程的方式四:使用线程池

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

  2. Java 多线程基础(十)interrupt()和线程终止方式

    Java 多线程基础(十)interrupt()和线程终止方式 一.interrupt() 介绍 interrupt() 定义在 Thread 类中,作用是中断本线程. 本线程中断自己是被允许的:其它 ...

  3. “全栈2019”Java多线程第二十二章:饥饿线程(Starvation)详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  4. “全栈2019”Java多线程第十二章:后台线程setDaemon()方法详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  5. 使用goroutine+channel和java多线程+queue队列的方式开发各有什么优缺点?

    我感觉很多项目使用java或者c的多线程库+线程安全的queue数据结构基本上可以实现goroutine+channel开发能达到的需求,所以请问一下为什么说golang更适合并发服务端的开发呢?使用 ...

  6. 创建Java多线程的两种方式和线程异常

    一.使用多线程的两种方法  使用多线程的两种方法有:继承Thread类和实现runable接口. 二.继承Thread类 来看一下thread类的源代码: class Thread implement ...

  7. java多线程 -- 创建线程的第三者方式 实现Callable接口

    Java 5.0 在 java.util.concurrent 提供了一个新的创建执行线程的方式:Callable 接口Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个 ...

  8. Java多线程-----创建线程的几种方式

       1.继承Thread类创建线程 定义Thread类的子类,并重写该类的run()方法,该方法的方法体就是线程需要完成的任务,run()方法也称为线程执行体 创建Thread子类的实例,也就是创建 ...

  9. Java 多线程创建和线程状态

    一.进程和线程 多任务操作系统中,每个运行的任务是操作系统运行的独立程序. 为什么引进进程的概念? 为了使得程序能并发执行,并对并发执行的程序加以描述和控制. 因为通常的程序不能并发执行,为使程序(含 ...

  10. Java 多线程 - 创建线程的方法 + Executors.newXXXThreadPool()缺点

    java中创建线程的三种方法以及区别: https://www.cnblogs.com/3s540/p/7172146.html 通过Executor 的工具类,创建三种类型的普通线程池: https ...

随机推荐

  1. 探索 GO 项目依赖包管理与Go Module常规操作

    探索 GO 项目依赖包管理与Go Module常规操作 目录 探索 GO 项目依赖包管理与Go Module常规操作 一.Go 构建模式的演变 1.1 GOPATH (初版) 1.1.1 go get ...

  2. Walrus 0.5发布:重构交互流程,打造开箱即用的部署体验

    开源应用管理平台 Walrus 0.5 已于近日正式发布! Walrus 0.4 引入了全新应用模型,极大程度减少了重复的配置工作,并为研发团队屏蔽了云原生及基础设施的复杂度.Walrus 0.5 在 ...

  3. Linux 多种方式实现文件共享

    文件共享服务在Linux系统上有多种方式,最常用的有Samba,vsftp,iSCSI,NFS这四种方式,如下将分别配置四种不同的文件共享服务. VSFTP 文件传输 FTP是文件传输协议.用于Int ...

  4. PicGo + Gitee 实现 Markdown 图床

    最近再研究图床,注册的阿里云域名备案还在审批,所以七牛云图床暂时没用,所以试下用PicGo+ Gitee PicGo - 基于 electron-vue 开发的图床工具 PicGo目前支持了微博图床, ...

  5. MySQL主主+Keepalived架构安装部署

    需求:根据当前客户的生产环境,模拟安装部署一套MySQL主主+Keepalived架构的测试环境,方便后续自己做一些功能性的测试. 1.准备工作 2.MySQL安装部署 3.MySQL主主配置 4.K ...

  6. [JVM]逃逸分析

    逃逸分析 JVM的内存分配策略 首先回顾一下JVM的内存分配策略. JVM的内存包括方法区.堆.虚拟机栈.本地方法栈.程序计数器.一般情况下JVM运行时的数据都是存在栈和堆上的.栈用来存放一些基本变量 ...

  7. offline 2 online | Cal-QL:校准保守 offline 训出的 Q value,让它与真实 reward 尺度相当

    论文标题:Cal-QL: Calibrated Offline RL Pre-Training for Efficient Online Fine-Tuning. NeurIPS 2023,5 5 6 ...

  8. JS leetcode 有多少小于当前数字的数字 解题分析,你应该了解的桶排序

    壹 ❀ 引 刷题其实一直没断,只是这两天懒得整理题目...那么今天来记录一道前天做的题,题目本身不难,不过拓展起来还是有些东西可以讲,题目来自leetcode有多少小于当前数字的数字,题目描述如下: ...

  9. JS leetcode 移除元素 题解分析

    壹 ❀ 引 又到了每日一道算法题的环节,今天做的题同样非常简单,题目来源leetcode27. 移除元素,题目描述如下: 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 va ...

  10. MindSponge分子动力学模拟——定义Collective Variables

    技术背景 在前面的几篇博客中,我们介绍了MindSponge分子动力学模拟框架的基本安装和使用和MindSponge执行分子动力学模拟任务的方法.这里我们介绍一个在增强采样领域非常常用的工具:Coll ...