温馨提示×

java newfixedthreadpool任务怎样提交

小樊
91
2024-11-26 15:00:23
栏目: 编程语言

在Java中,要使用newFixedThreadPool提交任务,首先需要导入java.util.concurrent包中的ExecutorServiceExecutors类。然后,可以使用Executors类创建一个固定大小的线程池,接着使用ExecutorServicesubmit方法提交任务。

下面是一个简单的示例:

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

public class FixedThreadPoolExample {
    public static void main(String[] args) {
        // 创建一个固定大小为3的线程池
        ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);

        // 提交任务到线程池
        for (int i = 0; i < 10; i++) {
            final int taskNumber = i;
            fixedThreadPool.submit(() -> {
                System.out.println("Task " + taskNumber + " is running on thread " + Thread.currentThread().getName());
                try {
                    // 模拟任务执行时间
                    TimeUnit.SECONDS.sleep(2);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("Task " + taskNumber + " is completed");
            });
        }

        // 关闭线程池
        fixedThreadPool.shutdown();
        try {
            // 等待所有任务完成
            if (!fixedThreadPool.awaitTermination(30, TimeUnit.SECONDS)) {
                fixedThreadPool.shutdownNow();
            }
        } catch (InterruptedException e) {
            fixedThreadPool.shutdownNow();
        }
    }
}

在这个示例中,我们创建了一个固定大小为3的线程池,并提交了10个任务。每个任务都会打印出它正在运行的线程名称,然后休眠2秒,最后打印出任务完成的信息。在所有任务提交完成后,我们关闭了线程池。

0