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

Java学习总结-多线程-三种创建方法

什么是线程?

线程(Thread)是程序内部的一条执行流程。

程序如果只有一条执行流程,那这个程序就是单线程程序。

什么是多线程?

多线程是指从软硬件上实现的多条执行流程的技术(多条线程由CPU负责调度执行)。

创建线程方式一:继承Thread父类

一个类继承了Thread父类,就可以成为线程,但不过要重写run方法。

通过start方法调用,不能直接调用run方法,否则还是单线程。

例如:class MyThread extendsThread{};

           MyThread p =  new MyThread;

           p.start();

缺点:不能继承其他类了。线程不能返回值。

创建线程方式二:实现Runnable接口

一个类实现了Runnable接口,则这个类作为对象直接传入Thread构造器中,那么就可以得到一个线程对象。

例如:

class PrimeRun implements Runnable{}
PrimeRun run = new PrimeRun();
Thread thread = new Thread(run);
thread.start();

也可以使用匿名内部类写法:

Thread thread1 = new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("执行了");
    }
});

其实就是写法不同,原理还是一样的。

缺点:还是不能能有返回值。

创建线程方式三:实现Callable接口

定义一个类实现Callable接口,重写call方法,封装要做的事情,和要返回的数据。

把Callable类型的对象封装成FutureTask(线程任务对象)。

把线程任务对象交给Thread对象。

调用Thread对象的start的方法启动线程。

线程执行完毕后、通过FutureTask对象的get的方法去获取线程任务对象执行的结果。

例如:

class MyCallable implements Callable<String>{};
MyCallable myCallable = new MyCallable(5);
FutureTask<String> futureTask = new FutureTask<>(myCallable);
Thread thread2 = new Thread(futureTask);
thread2.start();

缺点:代码复杂。

相关文章:

  • Qt 音乐播放器项目
  • C语言:转置矩阵
  • vue封装一个toast(vue-toastification)弹窗在拦截器js中调用
  • python | numpy小记(三):理解 NumPy 中的 `np.ceil`:向上取整的利器
  • Axure RP9.0教程 | 内联框架 对应html 元素中的iframe标签 (打开内部页面和外部网址)
  • 虚幻基础:蓝图基础知识
  • 基于Python的招聘推荐数据可视化分析系统
  • 金庸群侠传3D-启动
  • vscode使用方式
  • 分治(8题)
  • 嵌入式学习笔记——I2C
  • 周五论文答辩
  • 代码随想录算法训练营Day22
  • Redisson中的RateLimiter令牌桶限流简单使用
  • 如何在Linux系统上通过命令调用AI大模型?
  • RAG中对于PDF复杂格式文件的预处理的解决方案:MinerU
  • TCN-LSTM时间卷积长短期记忆神经网络多变量时间序列预测(Matlab完整源码和数据)
  • 比亚迪宋plus DMi 21款更新后,安装7.5版本高德地图机车版本
  • 用DrissionPage升级维基百科爬虫:更简洁高效的数据抓取方案
  • 《Docker概念解析》
  • 网站开发毕业指导手册/网页设计期末作业模板
  • 做一个b2b网站/关键词排名软件
  • 可以兼职做翻译的网站或app/群发软件
  • 网站诊断及优化方案/互联网怎么赚钱
  • 任经理 徐州网站建设/网店推广联盟
  • 河北汉佳 做网站的公司/seo课程