Android : Java中创建线程的几种方式_简单应用
主方法 MainTest.java
package com.example.mythread;import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;public class MainTest {public static void main(String[] data){
// 以下的方法的线程并发执行//执行线程一ExtendsThread extendsThread = new ExtendsThread();// 1.执行线程中的方法extendsThread.getData();// 2. 或者 启动线程extendsThread.start();try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}//执行线程二Runnable runnable = new RunnableThread();Thread thread2 = new Thread(runnable);//1 启动线程thread2.start();//执行线程三 实现Callable接口和Future创建线程Callable<String> callable = new CallableThread();FutureTask<String> futureTask = new FutureTask<>(callable);Thread thread3 = new Thread(futureTask);thread3.start();try {//获取线程返回值System.out.println(futureTask.get());} catch (Exception e) {e.printStackTrace();}try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}// Lambda表达式简化写法//扩展 函数式接口 创建线程Thread thread4 = new Thread(() ->{System.out.println("扩展函数式接口的输出");});thread4.start();//扩展 Runnable函数式接口 创建线程Runnable runnable2 =()->{System.out.println("扩展Runnable函数式接口的输出");};new Thread(runnable2).start();// 扩展 Callable 函数式接口Callable<String> c = () ->{System.out.println("扩展线程开始运行");//线程暂停3秒 表示业务处理啥的Thread.sleep(3000);System.out.println("扩展线程执行完成");return "Callable接口实现返回的字符串";};//启动线程//new Thread(new FutureTask<String>(c)).start();FutureTask<String> futureTask2 = new FutureTask<String>(c);new Thread(futureTask2).start();try {//输出返回数据System.out.println(futureTask2.get());} catch (Throwable e) {e.printStackTrace();}//new Thread(){@Overridepublic void run() {super.run();System.out.println("线程中的输出");}}.start();}
}
方式一:写个类继承Thread ExtendsThread.java
package com.example.mythread;
// 方式一 写个类 extends Thread
public class ExtendsThread extends Thread{@Overridepublic void run() {super.run();//调用方法getData();}public void getData(){System.out.println("方式一:我是线程中的输出");}
}
方式二: 写个类实现 Runnable接口 RunnableThread.java
package com.example.mythread;
//创建线程方式二 实现 Runnable 接口
public class RunnableThread implements Runnable{@Overridepublic void run() {//调用方法getData();}public void getData(){System.out.println("方式二:我是线程中的输出");}
}
方式三 写个类实现Callable接口和Future创建线程 CallableThread.java
package com.example.mythread;import java.util.concurrent.Callable;// 方式三 实现Callable接口和Future创建线程
public class CallableThread implements Callable<String> {@Overridepublic String call() throws Exception {getData();return "要返回的数据";}public void getData(){System.out.println("方式三:我是线程中的输出");}
}
相关文章:
Android : Java中创建线程的几种方式_简单应用
主方法 MainTest.java package com.example.mythread;import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask;public class MainTest {public static void main(String[] data){ // 以下的方…...
C# Onnx 特征匹配 DeDoDe 检测,不描述---描述,不检测
目录 介绍 效果 模型信息 项目 代码 下载 介绍 github地址:https://github.com/Parskatt/DeDoDe DeDoDe 🎶 Detect, Dont Describe - Describe, Dont Detect, for Local Feature Matching The DeDoDe detector learns to detect 3D consisten…...
第十六章 处理空字符串和 Null 值
文章目录 第十六章 处理空字符串和 Null 值空字符串和 Null 值的默认映射导出值控制空元素的形式 第十六章 处理空字符串和 Null 值 类和属性参数 XMLUSEEMPTYELEMENT XMLIGNORENULL XMLNILNOOBJECT XMLNIL 空字符串和 Null 值的默认映射 下表总结了空字符串和 null 值的…...
MYSQL 处理重复数据
文章目录 前言防止表中出现重复数据统计重复数据过滤重复数据删除重复数据在这里插入代码片后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:Mysql 🐱👓博主在前端领域还有很多知识和技术需要掌握,正…...
世岩清上:未来科技展览的策展视野
面对科技未来,策展视野的核心在于把握趋势,理解人性,并充分运用科技手段提升观众的体验。以下是我对未来科技展览的策展视野。 一、以人为本的设计理念 科技发展的最终目的是服务于人类,提升人们的生活质量。因此,展…...
如何理解2023vivo开发者大会,使用Rust语言编写蓝河操作系统(BlueOS)?
在2023年vivo开发者大会上,vivo宣布使用Rust语言编写其蓝河操作系统(BlueOS)。 什么是Rust语言? Rust 是一种开放源代码系统编程语言,可用于开发高效、安全的软件。 使用 Rust 可管理内存并控制其低级详细信息。 但你…...
Android flutter this and base files have different roots
类似经历者 Android build fails with certain plugins if project is in a different drive (from sdk) 错误描述 我是windows系统,下载 flutter sdk 我是放在D盘,flutter项目是放在E盘,flutter 执行 pub get的时候,会在我C盘…...
Excel动态选择某一行/列的最后一个数据
选择列的最后一个数据: 以A列为例,使用: LOOKUP(1,0/(A:A<>""),A:A)选择行的最后一个数据: 以第3行为例,使用: LOOKUP(1,0/(3:3<>""),3:3)示例程序 列最后一个数据&a…...
扫描条形码到电脑:Barcode to pc 4.6.3 Crack
像专业人士一样使用条形码将条形码发送到 PC 排名第一的智能手机扫描应用程序 将条形码即时发送到计算机程序并自动执行任务的最简单方法 受到全球 500,000 多名用户的信赖 条形码到 PC:Wi-Fi 扫描仪应用程序,条码到 PC:适用于 Android 和 i…...
从0到0.01入门 Webpack| 003.精选 Webpack面试题
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...
[数据结构]-红黑树
前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、红黑树的…...
Android 13.0 Launcher3 app列表页桌面图标按安装时间排序
1.概述 在13.0的系统rom定制化开发中,在对Launcher3进行功能开发时,系统默认的app列表页排序是安装app名称进行排序的, 由于功能的需要要求按照app安装时间进行排序,这就需要找到相关的排序地方,进行排序方式的修改就能完成这个功能 2.Launcher3 app列表页桌面图标按安装…...
QFont如何设置斜体|QlineEdit设置只能输入数字|QThread::finished信号发出后worker未调用析构函数
QFont如何设置斜体 要设置 QFont 的斜体,你可以使用 setItalic() 方法。以下是一个示例代码: #include <QApplication> #include <QLabel> #include <QFont> int main(int argc, char *argv...
中伟视界:创新解决方案,搭建自适应的AI算法模型训练平台
搭建AI算法模型自训练平台是当今人工智能领域的热门话题,但是其中存在着许多技术难点需要克服。 自训练平台需要具备高效的算法模型,这就要求能够处理庞大的数据量并进行高速计算。 平台需要具备强大的数据管理及存储能力,以满足训练过程中的…...
UML建模图文详解教程08——部署图
版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl本文参考资料:《UML面向对象分析、建模与设计(第2版)》吕云翔,赵天宇 著 部署图概述 部署图(deployment diagram)也被译作配置…...
发布鸿蒙的第一个java应用
1.下载和安装华为自己的app开发软件DevEco Studio HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 2.打开IDE新建工程(当前用的IDEA 3.1.1 Release) 选择第一个,其他的默认只能用(API9)版本,搞了半天才发现8ÿ…...
【C++干货铺】优先队列 | 仿函数
个人主页点击直达:小白不是程序媛 C系列专栏:C干货铺 代码仓库:Gitee 目录 优先队列(priority_queue )的介绍和使用 priority_queue的介绍 priority_queue的使用 大堆 小堆 priority_queue的模拟实现 仿…...
突破技术障碍:软件工程师如何应对项目中的难题?
在软件开发项目中,工程师常常会遇到各种技术难题。这些难题可能涉及到复杂的算法、不兼容的系统、难以预见的软件行为,或者其他许多方面。 以下是一些策略和方法,可以帮助软件工程师有效地应对这些挑战: 1、理解问题:…...
Linux(7):Vim 程序编辑器
vi 基本上 vi 共分为三种模式,分别是【一般指令模式】、【编辑模式】与【指令列命令模式】。 这三种模式的作用分别是: 一般指令模式(command mode) 以 vi 打开一个文件就直接进入一般指令模式了(这是默认的模式,也简称为一般模式)。在这个模…...
windows搭建gitlab教程
1.安装gitlab 说明:由于公司都是windows服务器,这里安装以windows为例,先安装一个虚拟机,然后安装一个docker(前提条件) 1.1搜索镜像 docker search gitlab #搜索所有的docker search gitlab-ce-zh #搜索…...
软件过程的改进模型与实施步骤
软件过程的改进模型与实施步骤 在快速发展的信息技术领域,软件过程改进是提升开发效率、保证产品质量的关键手段。无论是传统的瀑布模型还是敏捷开发方法,都需要通过科学的改进模型来优化流程。常见的改进框架如CMMI(能力成熟度模型集成&…...
如何轻松备份微信聊天记录:WeChatMsg完整使用指南
如何轻松备份微信聊天记录:WeChatMsg完整使用指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg…...
深入解析均匀分布的期望与方差:从理论推导到实际应用
1. 均匀分布的基本概念与生活实例 均匀分布就像你往一个长方形的游泳池里随机扔一个漂浮球,球落在任何位置的概率都是相同的。这种"雨露均沾"的特性,使得均匀分布在概率论中占据着独特地位。想象一下抽奖转盘被平均分成若干个等份,…...
反激电源设计避坑指南:从原理到实践的5个关键点
反激电源设计避坑指南:从原理到实践的5个关键点 在电源设计领域,反激式拓扑因其结构简单、成本低廉而广受欢迎,但看似简单的电路背后却暗藏诸多设计陷阱。许多工程师在首次接触反激电源时,往往会被其"低门槛"所迷惑&…...
多模态游戏AI训练成本骤降68%?奇点大会闭门报告首次披露轻量化推理框架(仅限首批参会者获取)
第一章:2026奇点智能技术大会:多模态游戏AI 2026奇点智能技术大会(https://ml-summit.org) 多模态游戏AI的范式跃迁 传统游戏AI长期依赖规则引擎或单模态感知(如仅视觉或仅文本),而2026奇点大会上发布的多模态游戏AI…...
SigmaStar SSC335/SSC337 ISP烧录避坑指南:为什么你的FLASH启动不了?
SigmaStar SSC335/SSC337 ISP烧录避坑指南:为什么你的FLASH启动不了? 当你满怀期待地按下电源键,却发现开发板毫无反应——这种挫败感每个嵌入式开发者都深有体会。SSC335/SSC337作为智能视觉处理领域的明星芯片,其ISP烧录过程看似…...
从光学特性到算法实现:深度解析Shading校正技术
1. 什么是Shading现象? 当你用手机拍摄一张纯色背景的照片时,有没有发现画面四角总是比中心暗一些?这就是典型的Luma Shading现象。专业相机镜头拍出来的照片边缘经常会出现暗角,而手机摄像头则更容易出现边缘偏色问题,…...
Windows触控板三指拖拽终极指南:像Mac一样流畅操作
Windows触控板三指拖拽终极指南:像Mac一样流畅操作 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/ThreeFingersDragOnWin…...
Spring Cloud Zuul实战:5分钟搞定微服务网关配置(含Eureka集成)
Spring Cloud Zuul极速实践:从零构建高可用微服务网关 微服务架构的流行让系统拆分变得更加灵活,但同时也带来了新的挑战——如何优雅地管理众多服务的入口?想象一下,当你的系统由数十个微服务组成时,客户端需要记住每…...
CLIP-GmP-ViT-L-14图文匹配工具效果展示:多物体复杂场景中‘主对象’优先匹配
CLIP-GmP-ViT-L-14图文匹配工具效果展示:多物体复杂场景中‘主对象’优先匹配 你有没有遇到过这种情况?一张照片里,有猫、有狗、有沙发、有地毯,背景还有窗外的树。当你问一个AI模型“这张图里有什么”时,它可能会告诉…...
