java线程创建的三种方式为:
1.继承Thread类
scala
class MyThread extends Thread {
public void run() {
// 线程执行的代码
}
}
// 使用
MyThread thread = new MyThread();
thread.start();`
实现runable接口
arduino
`class MyRunnable implements Runnable {
public void run() {
// 线程执行的代码
}
}
// 使用
Thread thread = new Thread(new MyRunnable());
thread.start();`
实现callable接口
arduino
class MyCallable implements Callable<String> {
public String call() throws Exception {
// 线程执行的代码
return "结果";
}
}
// 使用
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<String> future = executor.submit(new MyCallable());
String result = future.get(); // 获取返回值
executor.shutdown();
三种方法的演变关系是依次的,thread类最早,runable接口次之,callable接口最晚,其中callable接口提供了执行完成后提供返回值的能力,通常推荐的是使用继承runnable接口的方式,如果需要使用返回值,则使用callable接口。
graph TD
A[需要创建线程] --> B{需要返回值或异常处理?}
B -->|是| C[使用Callable+Future]
B -->|否| D{类需要继承其他类吗?}
D -->|是| E[实现Runnable]
D -->|否| F{简单临时使用?}
F -->|是| G[继承Thread]
F -->|否| H[实现Runnable]