首页 > 编程语言 >Java线程池内容记录

Java线程池内容记录

时间:2024-09-28 22:35:53浏览次数:8  
标签:Java Thread 记录 队列 threadPool 任务 线程

  1. 线程池
    实现了对线程的复用,统一管理和维护线程,减少没有必要的开销。
    为什么要用线程池?
    为了提高效率,需要将一些业务采用多线程的方式去执行。几乎所有需要异步或并发执行任务的程序都可以使用线程池。
    线程池的概念和连接池是类似的。在Java集合中存储大量的线程对象,每次执行异步操作或者多线程操作时,直接从集合中拿到线程对象执行方法,不需要每次创建和销毁线程。

  2. Jdk自带的线程池:
    Jdk中基于Executors工具类提供了很多种线程池,一般不会用。
    2.1 newFixedThreadPool
    这个线程池的线程数的固定的,构建线程池的时候指定。线程是懒加载,当线程池创建好后,线程池中是没有线程的,是随着任务的提交将线程在线程池中创建出来。如果任务过来,没有空闲线程了,会把任务放在阻塞队列里(LinkedBlockingQueue无界队列)。直到有空闲线程,则从阻塞队列里获取一个任务进行处理。

    public static void main(String[] args) {
        ExecutorService threadPool = Executors.newFixedThreadPool(5);
        threadPool.execute(() -> {
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(Thread.currentThread().getName() + "-thread1");
        });

        threadPool.submit(() -> {
            System.out.println(Thread.currentThread().getName() + "-thread2");
        });
    }

2.2 newSigleThreadExecutor

标签:Java,Thread,记录,队列,threadPool,任务,线程
From: https://www.cnblogs.com/chengdanally/p/18436702

相关文章

  • python多线程与线程池
    线程:是任务的执行者。进程:是一个动态的概念。适用情况:IO密集用多线程。CPU密集用多进程。原因:Cpython解释器中使用了GIL全局解释锁,一个进程只有一个锁。只有拿到这个锁的线程才能获取解释器,取解释执行代码。这就导致了即使开了多线程,实际上只有一个线程在执行。因此......
  • 个位数统计Java
    1//给定一个k位整数1(0,,,d​k−1​​>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定0,则有2个0,3个1,和1个3。2//输入格式3//每个输入包含1个测试用例,即一个不超过1000位的正整数。4//输出格式:5//对NN中每一种不同的个位数字,以D:M......
  • Java数据类型与运算符
    前言Java是一种广泛使用的编程语言,它以其“一次编写,到处运行”(WriteOnce,RunAnywhere,简称WORA)的理念而闻名。Java的学习将伴随着该文章展开!!一.数据类型Java的数据类型大体与C语音相类似,又有些许不同,且听我道来。基本数据类型分为整型,字符型,浮点型以及布尔类型! 1.1......
  • 华为OD机试2024年E卷-转骰子[200分]( Java | Python3 | C++ | C语言 | JsNode | Go )实
    题目描述骰子是一个立方体,每个面一个数字,初始为左1,右2,前3(观察者方向),后4,上5,下6,用123456表示这个状态,放置在平面上,可以向左翻转(用L表示向左翻转1次),可以向右翻转(用R表示向右翻转1次),可以向前翻转(用F表示向前翻转1次),可以向后翻转(用B表示向后翻转1次),可以逆时针旋转(......
  • 华为OD机试2024年E卷-矩阵匹配[200分]( Java | Python3 | C++ | C语言 | JsNode | Go )
    题目描述从一个N*M(N≤M)的矩阵中选出N个数,任意两个数字不能在同一行或同一列,求选出来的N个数中第K大的数字的最小值是多少。输入描述输入矩阵要求:1≤K≤N≤M≤150输入格式:NMKN*M矩阵输出描述N*M的矩阵中可以选出M!/N!种组合数组,每个组合......
  • 计算机毕业设计 智能旅游推荐平台的设计与实现 Java实战项目 附源码+文档+视频讲解
    博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌......
  • javaweb学习4
    今天主要学习了获取数据库连接的操作和mavenmaven导入mysql和druidjar包具体的jar坐标可以去这个网站找https://mvnrepository.com/<dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId......
  • C++多线程与并发类面试题
    题目来源:https://subingwen.cn/cpp/thread/https://mp.weixin.qq.com/s?__biz=Mzg4NDQ0OTI4Ng==&mid=2247489580&idx=1&sn=b9ac83040601230ff897f3394e956cea&chksm=cfb95145f8ced8536d5dcfa7d3165e3a51f5cb40e52f699745df0d8f71e4f7591674cd5cf156&token=......
  • 【Atcoder训练记录】AtCoder Beginner Contest 373
    https://atcoder.jp/contests/abc373/tasks赛后反思B题第一次读错题意,浪费了几分钟,需加强审题能力对于图论有些生疏,D题为简单图论,在76min的时候才AC,需加强训练图论A题给定12个字符串,求字符串长度\(=i\)的个数,直接模拟#include<bits/stdc++.h>#defineintlonglongu......
  • java字符串连接和运算符优先级
    源代码:publicclassEnumTest{publicstaticvoidmain(String[]args){intx=100;inty=200;System.out.println("x+y="+y+x+y);System.out.println(x+y+"=x+y");}}程序输出:x+y=200100200300=x......