请选择 进入手机版 | 继续访问电脑版
MSIPO技术圈 首页 IT技术 查看内容

Java中的线程(创建多线程的三种方法)

2024-02-20

创建多线程

方式一:继承Thread类

  • 定义一个子类MyThread继承线程类java.lang.Thread,重写run方法
  • 创建MyThread类的对象
  • 调用线程对象的start()方法启动线程(启动后还是执行run方法)
    在这里插入图片描述

优缺点:

  • 优点:编码简单
  • 确定:线程类已经继承Thread,无法继承其他类,不利于功能的扩展

多线程的注意事项:

  1. 启动线程必须调用start方法,不是调用run方法;
  2. 不要把主线程任务放在启动子线程之前

方式二:实现Runnable接口

  • 定义一个线程任务类MyRunnable实现Runnable接口,重写run方法
  • 创建MyRunnable任务对象
  • 把MyRunnable任务对象交给Thread处理
    在这里插入图片描述
  • 调用线程对象的start()方法启动线程
    在这里插入图片描述
    优缺点:
  • 优点:任务类只是实现接口,可以继续继承其他类、实现其他接口,扩展性强
  • 确定:需要多一个Runnable对象

另一种写法:匿名内部类写法

  1. 可以创建Runnable的匿名内部类对象
  2. 再交给Thread线程对象
  3. 再调用线程对象start启动线程

在这里插入图片描述
匿名内部类的简化方法
在这里插入图片描述

方式三:实现Callable接口

如果线程执行完毕后有一些数据需要返回,他们重写的run方法均不能直接返回结果。
解决方法:

  • JDK 5 提供了Callable接口和FutureTask类来实现(多线程的第三种创建方式)
  • 最大优点:可以返回线程执行完毕后的结果
  1. 创建任务对象:
    (定义一个类实现Callable接口,重写call方法,封装要做的事情,和要返回的数据)
    (把Callable类型的对象封装成FutureTask(线程任务对象))
  2. 把线程任务对象交给Thread对象
  3. 调用Thread对象的start方法启动线程
  4. 线程执行完毕后,通过FutureTask对象的get方法获取线程任务执行的结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

线程的常用API

在这里插入图片描述

相关阅读

热门文章

    手机版|MSIPO技术圈 皖ICP备19022944号-2

    Copyright © 2024, msipo.com

    返回顶部