android-java同步方法和异步方法
接口
Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
两种含义:一,Java接口,Java语言中存在的结构,有特定的语法和结构;二,一个类所具有的方法的特征集合,是一种逻辑上的抽象。前者叫做“Java接口”,后者叫做“接口”。在java中,接口用关键字interface来表示,书写方法为:
public interface Listener{void result();
}
而后面跟的接口名称,按照习惯以XX_Listener,也就是监听器的意思。
在Java语言规范中,一个方法的特征仅包括方法的名字、参数的数目和类型,而不包括方法的返回类型、参数名以及所抛出来的异常。在Java编译器检查方法的重载时,会根据这些条件判断两个方法是否是重载方法。但在Java编译器检查方法的置换时,则会进一步检查两个方法(分处超类型和子类型)的返还类型和抛出的异常是否相同。
接口实现和类继承的规则不同,为了数据的安全,继承时一个类只有一个直接父类,也就是单继承,但是一个类可以实现多个接口,接口弥补了类的不能多继承缺点,继承和接口的双重设计既保持了类的数据安全也变相实现了多继承。
抽象类
Java语言中,用abstract 关键字来修饰一个类时,这个类叫作抽象类。抽象类是它的所有子类的公共属性的集合,是包含一个或多个抽象方法的类。抽象类可以看作是对类的进一步抽象。在面向对象领域,抽象类主要用来进行类型隐藏。
在抽象类中可以包含一般方法和抽象方法。抽象方法的定义与一般方法不同,抽象方法在方法头后直接跟分号,而一般方法含有以大括号框住的方法体。所有的抽象方法必须存在于抽象类中。
区别
- Java抽象类可以提供某些方法的部分实现,而Java接口不可以;
- 向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到了这个新方法,而Java接口做不到这一点;
-
一个抽象类的实现只能由这个抽象类的子类给出,也就是说,这个实现处在抽象类所定义出的继承的等级结构中,而由于Java语言的单继承性;
任何一个实现了一个Java接口所规定的方法的类都可以具有这个接口的类型,而一个类可以实现任意多个Java接口,从而这个类就有了多种类型。
使用
在同步方法中,可以在方法体内按顺序执行代码得到结果并通过return返回,这类方法一般不用于计算,只是算力简单的代码;
如果算力复杂,需要消耗比较长的时间,则用异步方法,不直接返回结果,而且等待计算完成之后,回调结果。
public class Demo {public static String reverseStrSync(String src) {StringBuilder temp = new StringBuilder();temp.append(src);temp.reverse();return temp.toString();}public static void reverseStrASync(String src, ResultListener resultListener, Result result) {new Thread(new Runnable() {@Overridepublic void run() {StringBuilder temp = new StringBuilder();temp.append(src);temp.reverse();if (resultListener != null) {resultListener.reverse(temp.toString());}if (result != null) {result.reverse(temp.toString());result.reverse2(temp.toString());}}}).start();}public interface ResultListener {void reverse(String dst);}public abstract static class Result {abstract void reverse(String dst);void reverse2(String dst) {System.out.println("reverse2 = " + dst);}}public static void main(String[] args) {reverseStrASync("abcd", new ResultListener() {@Overridepublic void reverse(String dst) {System.out.println("ResultListener reverse = " + dst);}}, new Result() {@Overridevoid reverse(String dst) {System.out.println("Result reverse = " + dst);}});}
}
运行结果

相关文章:
android-java同步方法和异步方法
接口 Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 两种含义:…...
Flask入门(5):请求和响应
目录5.请求和响应5.1 请求5.2 响应5.请求和响应 5.1 请求 request对象封装解析了请求报文中的数据,其大部分功能是由依赖包werkzeug完成的,并且每个request对象都是线程隔离的,保证了数据的安全性。 request对象的属性 1.request.method …...
记进组后第五次组会汇报
2023年2月14日 日记一、小组组会二、实验室组会1、汇报内容(1)参考文献(2)CQF机制a.研究现状b.相关思考(3)研究计划2、汇报反馈一、小组组会 上午十点整,小组组会开始,有两个同学我…...
nil Foundation的Placeholder证明系统(2)
前序博客: nil Foundation的Placeholder证明系统(1) nil; Foundation团队2022年11月论文《Placeholder证明系统》。[2022年11月29日版本] 8. 优化 8.1 Batched FRI 不同于单独检查每个commitment,可对其进行FRI聚合。如对多项…...
QHash源码解读
QT版本 v5.12.10 元素 // 重点说明QHashData的函数,QHashData是QHash的基础 struct QHashData {struct Node {Node *next;uint h;};Node *fakeNext; // 永为nullNode **buckets; // Node *数组QtPrivate::RefCount ref;int size; // node个数int nodeSize; /…...
【Unity细节】RigidBody中Dynamic和Kinematic的区别
👨💻个人主页:元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 收录于专栏:unity细节和bug ⭐Dynamic和Kinematic的区别⭐ 文章目录⭐Dynamic和Kinematic的区别⭐dz…...
【C++、数据结构】哈希 — 闭散列与哈希桶的模拟实现
文章目录📖 前言1. STL中哈希表的两个应用⚡1.1 🌟unordered_set1.2 🌟unordered_map2. 常见查找的性能对比💥3. 哈希表模拟实现🏁3.1 哈希的概念:3.2 哈希函数:3.3 哈希冲突:3.4 闭…...
vue 开发环境 卸载node 版本 切换新的 node 版本 mac电脑
注意:操作的机器当前是mac,先卸载,再安装 1.查看现有 node 版本 node -v2.卸载现有 node 版本, 1.卸载从node官网下载pkg安装的node sudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man/*/node…...
在Linux和Windows上安装Nacos-2.1.1
记录:377场景:在CentOS 7.9操作系统安装Nacos-2.1.1。在Windows操作系统上安装Nacos-2.1.1。Nacos:Nacos: Dynamic Naming and Configuration Service。Nacos提供动态配置服务、服务发现及管理、动态DNS服务功能。版本:JDK 1.8 Na…...
解决QML debugging is enabled.Only use this in a safe environment.警告
系列文章目录 文章目录系列文章目录前言一、警告原因二、解决办法参考前言 我试图运行一个非常简单的程序,当单击退出按钮时关闭窗口,但获取以下输出,前提是包含按钮的应用程序窗口不显示: 您已启用QML调试(实际上它默认启用)&…...
华为OD机试真题JAVA实现【N进制减法】真题+解题思路+代码(20222023)
🔥系列专栏 华为OD机试(JAVA)真题目录汇总华为OD机试(Python)真题目录汇总华为OD机试(C++)真题目录汇总华为OD机试(JavaScript)真题目录汇总文章目录 🔥系列专栏题目输入输出描述示例一输入输出说明解题思路Code代码运行结果版权说明<...
ACM第一周---周训---题目合集.
🚀write in front🚀 📝个人主页:认真写博客的夏目浅石.CSDN 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:ACM周训练题目合集.CSDN 💬总结:…...
SCI学术论文的基本架构,以及Results、Discussion、Conclusion这三者的区别
SCI论文七大部分,各自应包含哪些内容 SCI写作——论文的结构 一篇SCI论文的大致框架包括Title, Abstract, Introduction, Methods/Methodology, Results, Discussion, Conclusion。不同的学科会有细微的变化,但大体框架基本不变。 1、标题Title 标题用…...
二叉树性质
在二叉树的第i层上至多有2^(i-1)个结点(i≥1)深度为k的二叉树至多有2^k-1个结点(k≥1)对任何一颗二叉树T,如果其叶子数为n0,度为2的结点数位n2,则n0n21满二叉树ÿ…...
二维数组操作示例
给定一个二维字符串数组,求对其按每个一维数组升序排列并按矩阵输出 //创建 String[][] twoDimension {{"A1","A2","A3"},{"B1","B2","B3"}}; List<String> arrayToList null; List<St…...
Spring Boot邮件发送(powernode CD2207)(内含教训视频+源代码)
Spring Boot邮件发送(powernode CD2207)(内含教训视频源代码) 教学视频源代码下载链接地址:https://download.csdn.net/download/weixin_46411355/87452056 目录Spring Boot邮件发送(powernode CD2207&…...
FortiTalk | “三英论安全”之OT安全热门话题解读
OT安全热门话题解读 在数字化转型时代,OT/IT融合已经成为主旋律,可能很多人还没有意识到“工厂”已经不是以前的“工厂”。从封闭走向互联、从现场走向远程、从手动走向自动,这种变革带来的不仅是便捷和效率,更潜藏着巨大的网络安…...
前端开发:关于diff算法详解
前言 前端开发中,关于JS原生的内容和前端算法相关的内容一直都是前端工作中的核心,不管是在实际的前端业务开发还是前端求职面试,都是非常重要且必备的内容。那么本篇博文来分享一个关于前端开发中必备内容:diff算法,d…...
如何为报表开发工具 FastReport .NET 设置 Apache 2 Web 服务器?
FastReport .NET是一款全功能的Windows Forms、ASP.NET和MVC报表分析解决方案,使用FastReport .NET可以创建独立于应用程序的.NET报表,同时FastReport .Net支持中文、英语等14种语言,可以让你的产品保证真正的国际性。专业版和企业版包括Fast…...
华为OD机试真题JAVA实现【出租车计费】真题+解题思路+代码(20222023)
🔥系列专栏 华为OD机试(JAVA)真题目录汇总华为OD机试(Python)真题目录汇总华为OD机试(C++)真题目录汇总华为OD机试(JavaScript)真题目录汇总文章目录 🔥系列专栏题目输入输出示例一输入输出说明示例二输入输出说明...
5大技术维度精通ABC系统:数字电路设计的逻辑综合与形式验证实践指南
5大技术维度精通ABC系统:数字电路设计的逻辑综合与形式验证实践指南 【免费下载链接】abc ABC: System for Sequential Logic Synthesis and Formal Verification 项目地址: https://gitcode.com/gh_mirrors/ab/abc ABC系统(Sequential Logic Syn…...
OFA-VE模型性能详解:OFA-Large在SNLI-VE测试集SOTA指标复现与解读
OFA-VE模型性能详解:OFA-Large在SNLI-VE测试集SOTA指标复现与解读 1. 引言:理解视觉蕴含的核心价值 视觉蕴含(Visual Entailment)是多模态人工智能领域的一个重要研究方向,它要解决的核心问题是:机器如何…...
Python类与对象实战:从简历模板到动态方法绑定的完整指南
Python类与对象实战:从简历模板到动态方法绑定的完整指南 面向对象编程(OOP)是现代编程语言的核心范式之一,而Python作为一门多范式语言,其面向对象特性尤为强大且易于使用。本文将通过构建一个简历模板系统的完整案例…...
七牛云CDN加速+HTTPS配置全攻略(阿里云域名解析实战)
七牛云CDN加速HTTPS配置全攻略(阿里云域名解析实战) 当你的网站访问速度开始影响用户体验,或是浏览器频繁弹出"不安全"警告时,CDN加速和HTTPS配置就成了刚需。七牛云作为国内领先的云服务商,提供了从存储到…...
Arduino按钮新玩法:一个按键实现开关机、模式切换,附完整项目代码
Arduino单键交互系统设计:从状态机到低功耗实战 当你的便携式环境监测仪只有一个物理按键,却需要实现开关机、模式切换、参数校准等复杂功能时,如何设计优雅的交互逻辑?本文将带你从基础按钮检测出发,逐步构建一个基于…...
如何快速上手IINA:macOS上最强大的免费视频播放器终极指南
如何快速上手IINA:macOS上最强大的免费视频播放器终极指南 【免费下载链接】iina 项目地址: https://gitcode.com/gh_mirrors/iin/iina 还在为macOS上找不到好用的视频播放器而烦恼吗?今天我要为你介绍一款macOS平台上最强大、最现代化的免费视频…...
对公司在使用AI变成的思考,我们是牧羊人吗?
当人类成为AI的牧羊人:在数字羊群中找回人的坐标晨光透过百叶窗,落在张工的键盘上。他刚刚用AI生成了三套前端方案,此刻正像牧羊人清点羊群般滑动鼠标核验代码。隔壁工位的李姐对着AI绘制的数据可视化图表皱眉——那根异常波动曲线像迷途的羔…...
北斗网格位置码实战:从编码原理到Java实现(非极地)
1. 北斗网格位置码:为什么我们需要它? 当你打开手机地图查看自己的位置时,看到的通常是经纬度坐标。这种表示方式虽然精确,但在实际应用中却存在不少问题。比如在物流配送系统中,直接存储和查询经纬度数据效率很低&am…...
FunClip终极指南:三步完成本地AI视频剪辑与智能处理高效工作流
FunClip终极指南:三步完成本地AI视频剪辑与智能处理高效工作流 【免费下载链接】FunClip Open-source, accurate and easy-to-use video clipping tool, LLM based AI clipping intergrated || 开源、精准、方便的视频切片工具,集成了大语言模型AI智能剪…...
MedGemma X-Ray开源大模型部署:医疗AI合规性与本地化实践
MedGemma X-Ray开源大模型部署:医疗AI合规性与本地化实践 1. 引言:当AI遇见医疗影像 想象一下,一位年轻的住院医师面对一张复杂的胸部X光片,需要快速判断是否存在肺炎、气胸或骨折的迹象。传统的阅片过程依赖经验积累࿰…...
