在Java中,要使用newFixedThreadPool
提交任务,首先需要导入java.util.concurrent
包中的ExecutorService
和Executors
类。然后,可以使用Executors
类创建一个固定大小的线程池,接着使用ExecutorService
的submit
方法提交任务。
下面是一个简单的示例:
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秒,最后打印出任务完成的信息。在所有任务提交完成后,我们关闭了线程池。