Java线程的三种创建方式

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]
相关推荐
shengjk11 分钟前
搞不懂去中心化、主从架构和 HA?1 分钟理清关系,再也不怕被问架构设计
后端
PFinal社区_南丞10 分钟前
开源开发者必备-toilet终端ASCII艺术字工具
后端
我不是混子11 分钟前
Springboot整合Druid
后端
aiopencode34 分钟前
API时代的调试革命,为什么未来的开发者都离不开Charles
后端
DBLens数据库管理和开发工具1 小时前
MySQL回表机制详解:一次查询背后的多次磁盘I/O
后端
用户68545375977691 小时前
⚔️ ReentrantLock大战synchronized:谁是锁界王者?
后端
Cache技术分享1 小时前
217. Java 函数式编程风格 - 从命令式到函数式:基于条件选择元素
前端·后端
用户68545375977691 小时前
CopyOnWriteArrayList:写时复制的艺术🎨
后端
用户68545375977691 小时前
线程安全过期缓存:手写Guava Cache🗄️
后端
用户68545375977691 小时前
🔄 ConcurrentHashMap进化史:从分段锁到CAS+synchronized
后端