首页 > 编程语言 >短视频类app源码,线程创建并非使用线程池一种

短视频类app源码,线程创建并非使用线程池一种

时间:2024-10-26 09:31:17浏览次数:1  
标签:Thread app 接口 Callable 源码 线程 new public

短视频类app源码,线程创建并非使用线程池一种,除此之外,以下线程池创建方式也不容错过。

有三种使用线程的方法:

  • 实现 Runnable 接口;
  • 实现 Callable 接口;
  • 继承 Thread 类。

实现 Runnable 和 Callable 接口的类只能当做一个可以在线程中运行的任务,不是真正意义上的线程,因此最后还需要通过 Thread 来调用。可以说任务是通过线程驱动从而执行的。

继承 Thread 类

同样也是需要实现 run() 方法,因为 Thread 类也实现了 Runable 接口。

当调用 start() 方法启动一个线程时,虚拟机会将该线程放入就绪队列中等待被调度,当一个线程被调度时会执行该线程的 run() 方法。

public class MyThread extends Thread {
    public void run() {
        // ...
    }
}
public static void main(String[] args) {
   MyThread mt = new MyThread();
   mt.start();
}

实现 Runnable 接口

需要实现 run() 方法。

通过 Thread 调用 start() 方法来启动线程。

public class MyRunnable implements Runnable {
    public void run() {
        // ...
    }
}
public static void main(String[] args) {
    MyRunnable instance = new MyRunnable();
    Thread thread = new Thread(instance);
    thread.start();
}

实现 Callable 接口

与 Runnable 相比,Callable 可以有返回值,返回值通过 FutureTask 进行封装。

public class MyCallable implements Callable<Integer> {
    public Integer call() {
        return 123;
    }
}
public static void main(String[] args) throws ExecutionException, InterruptedException {
    MyCallable mc = new MyCallable();
    FutureTask<Integer> ft = new FutureTask<>(mc);
    Thread thread = new Thread(ft);
    thread.start();
    System.out.println(ft.get());
}

或者可以使用线程池进行执行

MyCallable myCallable = new MyCallable();
ExecutorService executorService = Executors.newFixedThreadPool(1);
Future<String> submit = executorService.submit(myCallable);
System.out.println(submit.get());

实现接口 VS 继承 Thread

实现接口会更好一些,因为:

  • Java 不支持多重继承,因此继承了 Thread 类就无法继承其它类,但是可以实现多个接口;
  • 类可能只要求可执行就行,继承整个 Thread 类开销过大。

以上就是短视频类app源码,线程创建并非使用线程池一种, 更多内容欢迎关注之后的文章

标签:Thread,app,接口,Callable,源码,线程,new,public
From: https://www.cnblogs.com/yunbaomengnan/p/18503649

相关文章

  • 鸿蒙编程江湖:ArkTS 的多线程与序列化支持
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。提升性能的高级技术在当今的软件开发领......
  • 鸿蒙案例实践:图像处理应用中多线程任务调度与性能优化
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。1.项目需求与目标分析背景:图像处理......
  • 基于nodejs+vue基于的私人物品管理平台[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于私人物品管理的研究,现有研究主要以企业物品管理或公共物品管理为主,专门针对私人物品管理的研究较少。在国内外,对于物品管理的研究多集中在大型组织......
  • 基于nodejs+vue基于的食品销售系统[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于食品销售系统的研究,现有研究主要以传统的销售模式和管理方式为主。在国内外,虽然有不少企业已经在食品销售领域应用了信息化管理手段,但专门针对集会......
  • 基于nodejs+vue基于的诗文网站[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于诗文网站的研究,现有研究主要集中在传统诗文内容的呈现与简单交互功能方面。在国内外,诗文网站多以展示经典诗文作品、提供简单的检索功能为主。专门......
  • 多线程基础
    一、线程、程序、进程的定义及区别程序:一组计算机能识别和执行的指令、它是一些保存在磁盘上的指令的有序集合。进程:程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。线程与进程相似,但线程......
  • 【RocketMQ】源码以及环境搭建
    1  前言本节我们开始看一下RocketMQ相关的东西,我们主要看一条链路,大致如下:(1)环境的搭建,源码的下载(2)消息的结构以及相关类可能也会看下消息的存储(3)消息的生产以及发送过程(4)消息的消费过程大概看着四方面的内容,本节主要看下源码的下载以及环境的搭建。在看之前,我们顺便回......
  • 短视频app开发源码,骨架屏技术优化前端体验
    一、什么是骨架屏?骨架屏是一种在短视频app开发源码页面加载过程中,以占位符形式展示页面结构的技术。它通过显示简单的灰色块和线条,让用户在等待内容加载时获得视觉反馈,提高了用户的满意度。二、为什么需要骨架屏?在移动设备和慢速网络环境下,短视频app开发源码的页面加载速度变得......
  • BeanFactory 和 ApplicationContext 的区别
    这是SpringFramework对ApplicationContext的解释:Theorg.springframework.context.ApplicationContextinterfacerepresentstheSpringIoCcontainerandisresponsibleforinstantiating,configuring,andassemblingthebeans.ApplicationContext代表Spring......
  • dremio 25.2 软件包以及github 源码更新了
    昨天我说了dremio发布了25.2提供了新的catalog支持,之后过了一段时间dremio同时也提供了软件包以及github源码的更新说明25.1版本构建关于dremio-js的私服问题在这次代码中也看到解决了,新功能代码可以看看参考资料https://github.com/dremio/dremio-oss/blob/master/ui/......