首页 > 编程语言 >java 线程池 Executors原生三大方法

java 线程池 Executors原生三大方法

时间:2024-06-03 20:10:28浏览次数:23  
标签:java Executors 队列 线程 new ExecutorService

package com.chen.pool;

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

public class Test1 {
public static void main(String[] args) {
// 平时我们创建一些类使用工具类操作 s
// 总数可以管理

    // 线程池  Executors原生三大方法
    ExecutorService threadpool1 = Executors.newFixedThreadPool(50); // 固定大小
   // ExecutorService threadpool2 = Executors.newCachedThreadPool(); //可以弹性伸缩的线程池,遇强则强
    //ExecutorService threadpool3 = Executors.newSingleThreadExecutor(); // 只有一个


    try {
        // 10个线程,会显示几个线程~
        for (int i = 1; i <= 100; i++) {
            // 线程池,执行线程
            threadpool1.execute(()->{
                System.out.println(Thread.currentThread().getName()+" running...");
            });
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        // 线程池关闭
        threadpool1.shutdown();
    }


}

}

====================线程池ExecutorService =================================
public static void main(String[] args) {

    // 代码级别的
    System.out.println(Runtime.getRuntime().availableProcessors());

    ExecutorService threadPool = new ThreadPoolExecutor(
            2,
            Runtime.getRuntime().availableProcessors(), // 线程池最大大小5
            2L,
            TimeUnit.SECONDS, // 超时回收空闲的线程,假设超过了指定的时间,这个最大的线程就不被
            new LinkedBlockingDeque<>(3), // 根据业务设置队列大小,队列大小一定要设置
            Executors.defaultThreadFactory(), // 不用变
            new ThreadPoolExecutor.CallerRunsPolicy() //拒绝策略
    );

    // 拒绝策略说明:
    // 1. AbortPolicy (默认的:队列满了,就丢弃任务抛出异常!)
    // 2. CallerRunsPolicy(哪来的回哪去? 谁叫你来的,你就去哪里处理)
    // 3. DiscardOldestPolicy (尝试将最早进入对立与的人任务删除,尝试加入队列)
    // 4. DiscardPolicy (队列满了任务也会丢弃,不抛出异常)

    try {
        // 队列  RejectedExecutionException 拒绝策略
        for (int i = 1; i <= 20; i++) {
            // 默认在处理
            threadPool.execute(()->{
                System.out.println(Thread.currentThread().getName()+" running....");
            });
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        threadPool.shutdown();
    }


}

标签:java,Executors,队列,线程,new,ExecutorService
From: https://www.cnblogs.com/chenshaojun2008/p/18229544

相关文章

  • OPEN_CV多线程线程池管理
    两种自旋锁的设置操作系统级别自旋锁的设置,例如在C++11及以后的版本中,自带线程管理库,可以定义为:defineCV_YIELD()std::this_thread::yield(),此时进入CV_YIELD(),线程释放CPU,线程被阻塞,等待被唤醒.CPU级别的自旋锁的设置,与使用的CPU架构有关,以X86为例,X86......
  • 【精品毕设】基于JavaEE的线上考试系统设计实现(包含源码和论文)
    摘 要随着计算机技术的迅猛发展,学校教学和管理的信息化发展也有长足的进步,这就要求各个环节都均衡发展,从软硬件双方面把学校建设成一流的信息管理、教育教学的平台。本文设计开发的考试管理系统也是其中重要的一个方面。该系统本着减轻教师工作负担、提高工作效率、优化学生......
  • java毕业设计之网上书城系统(ssm项目源码+LW+PPT)
    1项目介绍本系统主要包括管理员和用户;主要包括:个人中心、用户管理、图书类型管理、热卖图书管理、管理员管理、系统管理、订单管理等功能的管理系统。2、项目技术项目后端框架:Java+ssm项目前端框架:vue2,ssm3、开发环境ssm+vue环境说明:环境说明:开发语言:java框架:ssm......
  • java毕业设计之校园旧书交易交换平台(ssm项目源码+LW+PPT)
    1项目介绍本系统主要包括以下功能模块:主页、个人中心、学生管理、发布人管理、书籍分类管理、书籍信息管理、交易信息管理、交换信息管理、系统管理等模块,通过这些模块的实现能够基本满足日常校园旧书交易交换的操作。2、项目技术项目后端框架:Java+ssm项目前端框架:vue......
  • java毕业设计之影院管理系统(ssm项目源码+LW+PPT)
    1项目介绍本系统主要针对管理员和用户角色,主要包括:个人中心,电影信息管理,电影类型管理,系统管理,订单管理等功能的界面。2、项目技术项目后端框架:Java+ssm项目前端框架:vue2,ssm3、开发环境ssm+vue环境说明:环境说明:开发语言:java框架:ssm,vueJDK版本:JDK1.8数据库:mysql......
  • Java 多线程的创建
    Java多线程的创建Java元的JVM允许程序运行多个线程,使用java.lang.Thread类代表线程,所有的线程对象都必须是Thread类或其子类线程的创建方式有两种,一者为继承Thread类,一者为实现Runnable接口实现方式之一:继承Thread类实现步骤Java通过继承Thread类来创建并启动多线程......
  • java 中byte的取值范围
    众所周知,java中byte的取值范围-128~127,那么为什么呢?java中二进制是采用补码运算的,其中最高位0代表正数1代表负数。正数的正码,反码,补码相同,负数补码=反码+1。举例:-10正码:10001010反码:11110101补码:11110110一字节byte占8bit位。那么正数范围为00000000~0111111......
  • 从零手写实现 nginx-01-为什么不能有 java 版本的 nginx?
    前言大家好,我是老马。很高兴遇到你。作为一个java开发者,工作中一直在使用nginx。却发现一直停留在使用层面,无法深入理解。有一天我在想,为什么不能有一个java版本的nginx呢?一者是理解nginx的设计灵魂,再者java开发者用java语言的服务器不是更加自然吗。于是动手开......
  • Java的冷知识你知道吗?
    1、方法参数不能超过255个在Java中,方法的参数数量是有限制的,最多不能超过255个。这个知识点可能对于大多数程序员来说并不常用,因此即使是经验丰富的Java开发者也可能不清楚这一点。2、Java中的自动装箱与拆箱自动装箱是Java5引入的新特性,它允许将基本数据类型自动转换成对应......
  • 云渲染农场什么是线程模式?
    ​许多设计师在选择云渲染农场时,常常会遇到48线程、56线程、72线程等选项,然而,不少新手在面对这些选择时,往往无法直观地感受到不同线程数量之间的差异。接下来,我们将共同探讨线程的作用和影响,帮助大家更好地理解这些选择。一、CPU线程的意思CPU线程是计算机处理器的基本工作单元......