多线程与实战

Java 教程 · 第 8 章 · 5 次浏览

多线程让程序同时执行多件事(比如同时处理多个用户请求)。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();   // 不再接收新任务
    }
}