多线程与实战
多线程让程序同时执行多件事(比如同时处理多个用户请求)。Java 的线程基于 Thread 类和 Runnable 接口。
创建线程
- 继承 Thread 重写 run()
- 实现 Runnable 传给 Thread(更推荐,避免单继承限制)
- Callable + FutureTask 可以拿到返回值
线程池
频繁 new Thread 开销大,生产用线程池 ExecutorService:newFixedThreadPool(n) 固定数量线程复用。
实战:模拟下载
开多个线程同时下载不同文件,用 CountDownLatch 等全部完成再汇总。
代码示例
import java.util.concurrent.*;
public class ThreadDemo {
public static void main(String[] args) throws Exception {
// 线程池:3 个线程
ExecutorService pool = Executors.newFixedThreadPool(3);
// 提交 5 个任务
for (int i = 1; i <= 5; i++) {
final int n = i;
pool.submit(() -> {
System.out.println("任务 " + n + " 在线程 " +
Thread.currentThread().getName());
try { Thread.sleep(500); } catch (InterruptedException e) {}
});
}
pool.shutdown(); // 不再接收新任务
}
}