多线程核心知识
1. 线程的创建方式
-
继承Thread
- 方法:继承
java.lang.Thread类,重写run()方法。 - 启动:创建子类实例,调用其
start()方法。 - 特点:简单,但Java单继承限制了扩展性。
class MyThread extends Thread {@Overridepublic void run() {System.out.println("线程执行");} } // 启动 new MyThread().start(); - 方法:继承
-
实现Runnable
- 方法:实现
java.lang.Runnable接口,实现run()方法。 - 启动:将
Runnable实例作为参数传给Thread构造器,再调用Thread实例的start()方法。 - 特点:可继承其他类。
class MyRunnable implements Runnable {@Overridepublic void run() {System.out.println("线程执行");} } // 启动 Thread thread = new Thread(new MyRunnable()); thread.start(); - 方法:实现
-
实现 Callable 接口
- 方法:实现
java.util.concurrent.Callable<V>接口,实现call()方法(可抛出异常、有返回值)。 - 启动:将
Callable实例提交给线程池(如ExecutorService),或封装为FutureTask再传给Thread。 - 特点:可获取异步执行结果(通过
Future/FutureTask),可捕获执行过程中的异常。
class MyCallable implements Callable<String> {@Overridepublic String call() throws Exception {return "执行结果";} } // 使用FutureTask启动 FutureTask<String> task = new FutureTask<>(new MyCallable()); new Thread(task).start(); String result = task.get(); // 获取返回值 - 方法:实现