java 线程执行任务_使用Java线程池执行任务

下面介绍一下使用ThreadPoolExecutor线程执行者来运行多线程任务。它将线程创建与任务运行分离开来。

package test;

import Java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

import java.util.concurrent.TimeUnit;

public class ThreadExecuteExample {

public static void main(String[] args) {

ExecutorService  service = Executors.newFixedThreadPool(2);

for (int i = 0; i < 10; i++) {

service.execute(new Runnable() {

@Override

public void run() {

try {

Thread.sleep(1 * 1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

});

}

service.shutdown();

try {

service.awaitTermination(Integer.MAX_VALUE, TimeUnit.DAYS);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

ExecutorService  service = Executors.newFixedThreadPool(2);

通过Executors创建了一个拥有两个线程的ExecutorService对象。

for (int i = 0; i < 10; i++) {

service.execute(new Runnable() {

@Override

public void run() {

try {

Thread.sleep(1 * 1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

});

}

往ExecutorService中提交了10个runnable对象的实例。ExecutorService会使用内部的2个线程来逐个运行这10个runnable对象。

service.shutdown();

关闭执行者。因为ExecutorService利用了它内部的初始化好的线程去执行提交的多个runnable任务,所以这些线程被反复利用而不会消亡。如果不显示的调用shutdown()方法的话,ExecutorService内部的线程一直会存活下去,这样即使任务完成了,虚拟机也不会退出。调用shutdown()后就会通知ExecutorService运行完任务后销毁所有的线程。

shutdown是一个非阻塞的方法。

service.awaitTermination(Integer.MAX_VALUE, TimeUnit.DAYS);

在指定的时间内阻塞等待ExecutorService任务的完成。

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,使用线程池可以方便地开启多线程来处理任务Java提供了几种常见的线程池创建方式,其中推荐使用ThreadPoolExecutor的构造器来创建适合业务场景的线程池。\[1\] 常见的线程池创建方式包括: 1. FixedThreadPool(固定线程池):线程池的大小一旦达到固定数量就会保持不变,适用于需要控制并发线程数量的场景。 2. SingleThreadExecutor(单线程化的线程池):只有一个线程线程池任务按照提交的次序顺序执行,适用于需要按顺序执行任务的场景。 3. CachedThreadPool(可缓存线程池):线程池的大小可以根据需要自动调整,适用于需要处理大量短期任务的场景。 使用线程池的好处是可以提前创建好多个线程,放入线程池中,使用时直接获取,使用完后放回池中,避免频繁创建和销毁线程,实现线程的重复利用。线程池能够独立负责线程的创建、维护和分配,提高了线程执行效率和资源利用率。\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [java线程(线程池使用总结](https://blog.csdn.net/domine/article/details/127342754)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值