ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

java多线程(线程池)

2026/8/5 16:20:03 拓冰建站 浏览量
java多线程(线程池)

1、创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。

public static void main(String[] args) {ExecutorService cachedThreadPool = Executors.newCachedThreadPool();for (int i = 0; i < 10; i++) {final int index = i;cachedThreadPool.execute(() -> {System.out.println("Thread.currentThread().getName() = " + Thread.currentThread().getName());});}}

2、创建一个固定线程数量,可重用的线程池。

public static void main(String[] args) {ExecutorService fixedThreadPool = Executors.newFixedThreadPool(2);for (int i = 0; i < 10; i++) {final int index = i;fixedThreadPool.execute(() -> {System.out.println("Thread.currentThread().getName() = " + Thread.currentThread().getName());});}}

3、创建一个指定最多线程数量的线程池。

package com.controller;import com.myThread.AdminThread;
import com.myThread.MyCallable;
import com.myThread.MyRunnable;
import org.springframework.web.bind.annotation.*;import java.util.concurrent.*;@RestController
@CrossOrigin
@RequestMapping("/admin")
public class AdminController{@GetMapping("/{id}")public long findById(@PathVariable Long id) throws InterruptedException {ExecutorService executorService = Executors.newFixedThreadPool(3);ThreadPoolExecutor pool = (ThreadPoolExecutor) executorService;System.out.println(pool.getPoolSize());//0for (int i = 0; i < 10; i++) {executorService.submit(()->{System.out.println(Thread.currentThread().getName() + "在执行了");});}return id;}
}

在这里插入图片描述