首页 > 其他分享 >通过线程池的方式获取线程

通过线程池的方式获取线程

时间:2023-04-01 20:58:11浏览次数:41  
标签:executorService name 方式 submit 获取 线程 new MyTask

​ 使用线程池可以更好地管理线程的数量,避免线程数量过多导致系统性能下降的问题。Java中提供了Executor框架,可以很方便地创建和管理线程池。

以下是使用线程池的示例代码:

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

public class Main {
    public static void main(String[] args) {
        // 创建一个线程池,最多同时执行2个任务
        ExecutorService executorService = Executors.newFixedThreadPool(2);

        // 提交任务
        executorService.submit(new MyTask("Task1"));
        executorService.submit(new MyTask("Task2"));
        executorService.submit(new MyTask("Task3"));
        executorService.submit(new MyTask("Task4"));
        executorService.submit(new MyTask("Task5"));

        // 关闭线程池
        executorService.shutdown();
    }
}

class MyTask implements Runnable {
    private String name;

    public MyTask(String name) {
        this.name = name;
    }

    public void run() {
        System.out.println("Task " + name + " is running in thread " + Thread.currentThread().getName());
    }
}

​ 在上面的示例中,创建了一个可以同时执行2个任务的线程池,然后提交了5个任务,由于线程池只能同时执行2个任务,因此只有前两个任务会立即开始执行,后面的任务需要等待前面的任务执行完毕之后才能开始执行。

​ 最后通过调用线程池的shutdown()方法关闭线程池。

​ 总体来说,使用线程池可以更好地管理线程,避免线程数量过多导致系统性能下降的问题,提高了系统的效率和稳定性。

标签:executorService,name,方式,submit,获取,线程,new,MyTask
From: https://www.cnblogs.com/ldh-0319/p/17279326.html

相关文章

  • Java创建线程的三种方式
    创建线程的三种方式1.继承Thread类,重写run方法publicclassMyThreadextendsThread{publicvoidrun(){System.out.println("HellofromMyThread!");}}publicclassMain{publicstaticvoidmain(String[]args){MyThreadthread......
  • linux 快捷方式的使用
    在Linux中,如果需要修改已有的符号链接(即快捷方式),可以使用ln命令的-f和-n选项来实现。具体操作如下:修改链接目标:如果需要修改已有符号链接的链接目标,可以使用-f选项覆盖原有链接。例如,假设已经存在一个名为symbolic_link的符号链接,链接到/path/to/target目录,现在需......
  • Java线程:wait()和notify()
    一、wait()和notify()含义二、标准代码示例创建两个线程Thread0和Thread1。代码实现:运行流程详解三、什么时候释放锁—wait()、notify()四、用生活故事讲懂线程的等待唤醒1.老王和老李(专家程序员):2.王哥和李哥(普通程序员):3.小王和小李(新手程序员):五、问题理解1、执行wait()的......
  • 多线程
    内容什么是线程如何创建线程线程的调度线程的一个设计模式:生产消费者模型线程池线程集合对象(侧重点)一、什么是线程进程:运行中的程序才可以称为进程,一个程序一个进程。宏观并行,微观串行。线程:1.任何一个程序都至少拥有一个线程,即主线程。但是java程序默认有两个线......
  • C# 直接在子线程中对窗体上的控件操作是会出现异常
    https://www.bbsmax.com/A/MAzA8klpd9/ Form1里privatedelegatevoidDispMSGDelegate(intindex,stringMSG);publicvoidDispMsg(intiIndex,stringstrMsg){if(this.richTextBox1.InvokeRequired==false)......
  • 线程停止
    线程停止1.建议线程正常停止--->利用次数,不建议死循环2.建议使用标志位--->设置一个标志位3.不要使用stop或者destroy等过时或者JDK不建议使用的方法//测试stop//1.建议线程正常停止--->利用次数,不建议死循环//2.建议使用标志位--->设置一个标志位//3.不要使用stop或者dest......
  • 线程休眠
    模拟网络延时放大问题的发生性//模拟网络延时:放大问题的发生性publicclassTestSleepimplementsRunnable{//票数privateintticketNums=10;@Overridepublicvoidrun(){while(true){if(ticketNums<=0){......
  • 线程
    目录线程线程概念的引入背景进程有了进程为什么要有线程进程和线程创建线程创建线程的两种方式参数和方法Thread类中的几个方法如何开启多线程进程和线程的比较1.pid不同2.开启效率的不同3.内存数据的共享不同多线程实现socket守护线程GIL锁(全局解释器锁)验证GIL的存在GIL与普通......
  • Css导入方式
    CSS导入HTML有三种方式:1.内联样式:在标签内部使用style属性,属性值是css属性键值对<divstyle="color:blue">HelloCSS~</div>2.内部样式:定义<style>标签,在标签内部定义css样式<style>div{color:red;}</styl......
  • mysql二进制文件安装方式
    安装进制包如果用户既不想安装最简单却不够灵活的RPM包,又不想安装复杂费时的源码包,那么,已经编泽好的二进制包将是很好的选择具体安装步骤如下。(1用root登录操作系统,增加mysql用户和组,数据库将安装在此用户下:she1l>groupaddmysalshell>useradd-gmysqlmysal(2)解压二进制安......