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

Java多线程:(2)通过实现Runnable接口创建线程

在Java多线程编程中,实现Runnable接口是创建线程的推荐方式之一。本文将详细讲解这种方法的实现原理、代码示例以及其优势。

 1. Runnable接口基础实现

下面是标准的Runnable接口实现方式:

//2.通过实现Runnable接口创建线程
 class MyRunnnable implements Runnable{

//Runnable记录任务,在通过创建Runnable把任务告诉Thread,Thread去实现
    //这是一种解耦合 把任务和线程这个概念分离开,这样的任务就可以交给其它地方那个来执行
     @Override
     public void run() {
         while(true){
             System.out.println("hello thread");
             try {
                 Thread.sleep(1000);
             } catch (InterruptedException e) {
                 throw new RuntimeException(e);
             }
         }

     }
 }
public class Demo2 {
    public static void main(String[] args) {
        Thread t=new Thread(new MyRunnnable());
        t.start();
        while(true){
            System.out.println("hello main");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
}

 2. 关键点解析

2.1 Runnable接口的特点
- **单一抽象方法**:Runnable是函数式接口,只包含一个抽象方法`run()`
- **任务与执行分离**:Runnable只定义任务内容,线程执行由Thread类控制
- **更灵活**:可以继承其他类,不像Thread类那样占用继承位置

### 2.2 线程创建流程
1. **实现Runnable接口**:创建`MyRunnable`类并实现`run()`方法
2. **创建Thread实例**:将Runnable对象作为参数传递给Thread构造器
3. **启动线程**:调用Thread实例的`start()`方法

### 2.3 代码执行分析
- 主线程和新建线程会**并发执行**
- 两个while循环会交替打印信息
- 每个线程都有自己的执行栈

## 3. 优势分析

| 特性                | 继承Thread方式 | 实现Runnable方式 |
|---------------------|---------------|------------------|
| 占用继承位置        | 是            | 否               |
| 资源共享能力        | 弱            | 强               |
| 代码复用性          | 低            | 高               |
| 适合Lambda表达式    | 否            | 是               |
| 线程池兼容性        | 较差          | 优秀             |

## 4. 实际应用建议

1. **推荐实现Runnable接口**:
   - 更符合面向对象设计原则
   - 便于共享资源
   - 适合线程池管理()

## 5. 常见问题解答

**Q: 为什么不能直接调用run()方法?**
A: 直接调用run()会在当前线程执行,只有start()会创建新线程并调用run()

**Q: Runnable和Callable有什么区别?**
A: Callable可以返回结果和抛出检查异常,Runnable则不能

**Q: 如何停止Runnable线程?**
A: 推荐使用标志位控制,而不是已废弃的stop()方法

## 6. 总结

实现Runnable接口创建线程是Java多线程编程的基础方式,具有以下特点:
- 符合"组合优于继承"原则
- 支持Lambda表达式简化代码
- 便于资源共享和线程池管理
- 是Java并发编程的推荐做法

掌握Runnable接口的使用,是学习Java高级并发编程的重要基础。

http://www.dtcms.com/a/98733.html

相关文章:

  • shell脚本--MySQL简单调用
  • 求阶乘--二分答案+0结尾与5有关
  • 日报日报流量分析
  • langchain框架,ollama调用deepseek r1 实现RAG问答
  • 软件架构设计中的软件过程模型初识
  • Postman 7.3.5 旧版下载指南(Win64)及注意事项
  • x82y 阿里滑块 阿里全系列
  • OpenAI API - Concept 核心概念说明
  • Intellij ider部署python项目教程
  • leetcode199 二叉树的右视图
  • MSTP与链路聚合技术
  • UE5屏幕淡入淡出插件 ScreenFade
  • 线程池详解
  • raise NotImplementedError(“子类必须实现此方法“)`
  • 【docker】Dockerfile中COPY和ADD的区别理解,多阶段构建中COPY的用法
  • 开发环境部署
  • 应用待机分组管控是啥
  • 智能预测维护:让设备“未卜先知”,减少宕机烦恼
  • 程序化广告行业(40/89):手游归因与投放异常解析
  • libva基础
  • SAP学习笔记 - 用Deepseek 整理SAP 07 - MRP要素的缩略语一览
  • ADC笔记
  • Windows下安装和配置Redis
  • 前台线程和后台线程
  • 算法刷题记录——题解目录汇总(持续更新)
  • Docker学习之dockerfile篇(day8)
  • 算法刷题记录——LeetCode篇(9.1) [第801~810题]
  • 精准的集装箱号码识别技术在过磅系统中的应用,显著提升物流效率、减少人为错误
  • 基于kafka的分布式日志收集平台项目(第三部分)
  • 页码设置相关问题记录