Java 创建一个线程的方式

Java中创建线程主要有三种方式,分别为继承Thread类、实现Runnable接口、实现Callable接口。

  • 继承Thread类,重写run()方法,调用start()方法启动线程
java 复制代码
public class ThreadTest {

    /**
     * 继承Thread类
     */
    public static class MyThread extends Thread {
        @Override
        public void run() {
            System.out.println("This is child thread");
        }
    }

    public static void main(String[] args) {
        MyThread thread = new MyThread();
        thread.start();
    }
}
  • 实现 Runnable 接口,重写run()方法
java 复制代码
public class RunnableTask implements Runnable {
    public void run() {
        System.out.println("Runnable!");
    }

    public static void main(String[] args) {
        RunnableTask task = new RunnableTask();
        new Thread(task).start();
    }
}

上面两种都是没有返回值的,但是如果我们需要获取线程的执行结果,该怎么办呢?

  • 实现Callable接口,重写call()方法,这种方式可以通过FutureTask获取任务执行的返回值
java 复制代码
public class CallerTask implements Callable<String> {
    public String call() throws Exception {
        return "Hello,i am running!";
    }

    public static void main(String[] args) {
        //创建异步任务
        FutureTask<String> task=new FutureTask<String>(new CallerTask());
        //启动线程
        new Thread(task).start();
        try {
            //等待执行完成,并获取返回结果
            String result=task.get();
            System.out.println(result);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
    }
}
相关推荐
雨落在了我的手上10 分钟前
初识java(七):Java调试案例讲解
java·intellij-idea·集成开发环境调试功能
Volunteer Technology15 分钟前
Spring AI MCP 案例-WebFlux SSE传输模式 (九)
java·数据库·人工智能·spring
rabbit_pro16 分钟前
SpringBoot3集成Langchain4j使用Ollama
java·开发语言
计算机安禾28 分钟前
【c++面向对象编程】第26篇:对象的内存模型:成员变量与成员函数的存储分离
开发语言·c++·算法
郝学胜-神的一滴32 分钟前
Qt 高级开发 005: Qt Creator与Visual Studio 项目双向转换
开发语言·c++·ide·qt·程序人生·visual studio
解决问题no解决代码问题39 分钟前
JAVA GC
java·开发语言·jvm
之歆1 小时前
DAY_10 JavaScript 深度解析:原型链 · 引用类型 · 内置对象 · 数组方法全攻略(下)
开发语言·前端·javascript·ecmascript
risc1234561 小时前
python 的字符串前缀
开发语言·python
小程故事多_801 小时前
Agent Loop 核心突破,上下文压缩四大流派,重新定义窗口资源利用率
java·开发语言·人工智能
如竟没有火炬1 小时前
字符串相乘——int数组转字符串
开发语言·数据结构·python·算法·leetcode·深度优先