当前位置: 首页 > news >正文

在Java中创建多线程的三种方式

多线程的创建和启动方式

在Java中,创建多线程主要有以下三种方式:

  1. 继承Thread类
  2. 实现Runnable接口
  3. 使用Callable接口与Future

下面是这三种方式的简单示例,以及如何在主类中启动它们。

1. 继承Thread类

class MyThread extends Thread {@Overridepublic void run() {System.out.println("Thread using inheritance from Thread class.");}
}

2. 实现Runnable接口

class MyRunnable implements Runnable {@Overridepublic void run() {System.out.println("Thread using Runnable interface.");}
}

3. 使用Callable接口与Future

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;class MyCallable implements Callable<String> {@Overridepublic String call() throws Exception {return "Thread using Callable interface.";}
}

主类用来启动线程

public class Main {public static void main(String[] args) {// 启动继承Thread类的线程MyThread thread1 = new MyThread();thread1.start();// 启动实现Runnable接口的线程Thread thread2 = new Thread(new MyRunnable());thread2.start();// 启动使用Callable接口的线程MyCallable myCallable = new MyCallable();FutureTask<String> futureTask = new FutureTask<>(myCallable);Thread thread3 = new Thread(futureTask);thread3.start();// 获取Callable线程的返回值try {String result = futureTask.get();System.out.println(result);} catch (InterruptedException | ExecutionException e) {e.printStackTrace();}}
}

总结

  • 使用Thread类时,创建一个子类,重写run方法。
  • 使用Runnable接口时,实现Runnable接口,定义run方法,再通过Thread类启动。
  • 使用Callable接口时,创建实现Callable的类,使用FutureTask来处理返回值,依然通过Thread类启动。

这样,你就可以通过这三种方式创建和启动多线程了。

http://www.lryc.cn/news/467960.html

相关文章:

  • 洛谷 AT_abc374_c [ABC374C] Separated Lunch 题解
  • 力扣2528.最大化城市的最小电量
  • 【zookeeper】集群配置
  • YOLO11 目标检测 | 导出ONNX模型 | ONNX模型推理
  • PostgreSQL DBA月度检查列表
  • 驱动开发系列12 - Linux 编译内核模块的Makefile解释
  • 用js+css实现圆环型的进度条——js+css基础积累
  • TDengine 与北微传感达成合作,解决传统数据库性能瓶颈
  • 通过Python爬虫获取商品销量数据,轻松掌握市场动态
  • 学习虚幻C++开发日志——TSet
  • 面向对象进阶(下)(JAVA笔记第二十二期)
  • 通信协议——UART
  • 最优阵列处理技术(七)-谱加权
  • Java | Leetcode Java题解之第486题预测赢家
  • leetcode动态规划(十五)-完全背包
  • AI视听新体验!浙大阿里提出视频到音乐生成模型MuVi:可解决语义对齐和节奏同步问题
  • 对比两个el-table,差异数据突显标记
  • 调研funasr时间戳返回时间坐标效果可用性
  • Tomcat默认配置整理
  • 深入理解Rust中的指针:裸指针 智能指针
  • 物联网实训项目:绿色家居套件
  • 缓存雪崩是什么
  • 【格物刊】龙信刊物已上新
  • DNA存储介绍
  • 如何修改MAC地址破解网络无线网络限制-担心别人蹭网,路由器设置MAC地址过滤,限定了能访问无线网络的网卡地址-供大家学习参考
  • C端产品经理与B端产品经理的区别
  • 书生营 L0G4000 玩转HF/魔搭/魔乐社区
  • 轻松检测麦克风功能:使用Python的sounddevice和soundfile库
  • k8s 部署步骤整理(containerd)
  • Swagge详解,SpringBoot项目集成Swagger