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 #搜索…...

IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...

MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...