android-java同步方法和异步方法

news2024/11/28 4:29:18

接口

Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
两种含义:一,Java接口,Java语言中存在的结构,有特定的语法和结构;二,一个类所具有的方法的特征集合,是一种逻辑上的抽象。前者叫做“Java接口”,后者叫做“接口”。在java中,接口用关键字interface来表示,书写方法为:

public interface Listener{
    void result();
}

而后面跟的接口名称,按照习惯以XX_Listener,也就是监听器的意思。

在Java语言规范中,一个方法的特征仅包括方法的名字、参数的数目和类型,而不包括方法的返回类型、参数名以及所抛出来的异常。在Java编译器检查方法的重载时,会根据这些条件判断两个方法是否是重载方法。但在Java编译器检查方法的置换时,则会进一步检查两个方法(分处超类型和子类型)的返还类型和抛出的异常是否相同。
接口实现和类继承的规则不同,为了数据的安全,继承时一个类只有一个直接父类,也就是单继承,但是一个类可以实现多个接口,接口弥补了类的不能多继承缺点,继承和接口的双重设计既保持了类的数据安全也变相实现了多继承。

抽象类

Java语言中,用abstract 关键字来修饰一个类时,这个类叫作抽象类。抽象类是它的所有子类的公共属性的集合,是包含一个或多个抽象方法的类。抽象类可以看作是对类的进一步抽象。在面向对象领域,抽象类主要用来进行类型隐藏。

在抽象类中可以包含一般方法和抽象方法。抽象方法的定义与一般方法不同,抽象方法在方法头后直接跟分号,而一般方法含有以大括号框住的方法体。所有的抽象方法必须存在于抽象类中。

区别

  1. Java抽象类可以提供某些方法的部分实现,而Java接口不可以;
  2. 向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到了这个新方法,而Java接口做不到这一点;
  3. 一个抽象类的实现只能由这个抽象类的子类给出,也就是说,这个实现处在抽象类所定义出的继承的等级结构中,而由于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() {
            @Override
            public 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() {
            @Override
            public void reverse(String dst) {
                System.out.println("ResultListener reverse = " + dst);
            }
        }, new Result() {
            @Override
            void reverse(String dst) {
                System.out.println("Result reverse = " + dst);
            }
        });
    }
}

运行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/345206.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中文编程发展不起来,无代码开发能否打个翻身仗

中文编程夹缝里生存众所周知,易语言开创了中文编写程序的先河,最早可追溯到2000年。当时易语言风靡一时,背后积攒了大批的用户,承载着那一代人的青春。也帮助了很多普通的初学者能够在短时间的入门。如今的易语言早已失去了往日的…

大咖说·图书分享|狼书(卷3):Node.js高级技术

Node.js都有哪些需要掌握的高级技术?前端为什么同样需要学习? Node.js未来的发展趋势究竟如何?本期大咖说,Node布道师桑世龙携新作《狼书(卷3):Node.js高级技术》展开分享。 ● 嘉宾介绍 桑世龙:Node布道…

博客系统 SSM 超强硬核良心推荐之第一弹 - 预备工作

硬核 ! 从 0 到 1 完美实现 SSM 版本的博客系统 , 学会保准不吃亏!一 . SSM 版本相比于 Servlet 版本的亮点二 . 初始化数据库三 . 前端页面3.1 注册页面3.2 登录功能3.3 文章总列表页3.4 自己的文章列表页3.5 文章详情页3.6 编写博客页面大家好 , 这是新的专栏 , 博客系统 SSM…

嵌入式Linux学习经典书籍-学完你就是高手

很多刚入门的朋友一直都有人问我要学习资料,嵌入式实在太杂,网上很多人写的太不负责了,本书单综合了本人以及一些朋友多年的经验整理而成。 本人见识和阅读量有限,本书单可能有不对的地方,欢迎朋友指正,交…

SCI写作,一定要避开这些“雷点”!

SCI论文写作中,除了要符合各部分的写作要求,还有许多细节问题需要我们注意,不然可能一不小心就会“踩雷”。 今天我们就来和大家分享SCI各个部分写作时的注意事项。 下面就进入正题! SCI写作注意事项 01 标题的拟定 1.避免使用无…

[Vivado那些事儿]将自定义 IP (HDL)添加到 Vivado 模块设计(Block Design)

绪论使用Vivado Block Design设计解决了项目继承性问题,但是还有个问题,不知道大家有没有遇到,就是新设计的自定义 RTL 文件无法快速的添加到Block Design中,一种方式是通过自定义IP,但是一旦设计的文件有问题就需要重…

短信链接跳转微信小程序

短信链接跳转微信小程序1 实现方案1.1 通过URL Scheme实现1.2 通过URL Link实现1.3 通过云开发静态网站实现2 实现方案对比3 实践 URL Schema 方案3.1 获取微信access_token3.2 获取openlink3.3 H5页面(模拟短信跳转,验证ok)4 问题小节4.1 io…

机器视觉_HALCON_示例实践_1.检测圆形

文章目录一、引言二、检测圆形三、总结一、引言 前面的文(用户指南/快速向导)差不多已经把HALCON的基本内容讲完了,并且在学习过程中还跑过一个简单示例——在单一背景下定位回形针。示例跑过,顿时觉得自己行了,但如果…

当make执行遇到 Arguments too long

1. 问题 Ubuntu20.04上make编译生成so的时候报错: make[1]:execvp:/bin/sh:Arguments too long对应makefile中的报错位置,仅仅是生成so的时候报错,伪代码如下 ${build_tool} -shared -fpic -o "$" ${OBJ_FILE} ${LDFLAGS}然而如…

Linux基础 - NTP时间同步

‍‍🏡博客主页: Passerby_Wang的博客_CSDN博客-系统运维,云计算,Linux基础领域博主 🌐所属专栏:『Linux基础』 🌌上期文章: Linux基础 - DNS服务进阶 📰如觉得博主文章写的不错或对你有所帮助…

IP地址在网络安全行业有哪些应用?

随着我国网络安全法律的颁布实施、制度的细化落实以及标准体系的制定,为我国产业数字化和数字产业化铺平了道路。近几年,数据将对网络安全行业产生巨大影响,包括行业数据的采集、共享,智能算法的演进以及算力资源的复用&#xff0…

ContextCapture Master 倾斜摄影测量实景三维建模技术应用

查看原文>>>https://mp.weixin.qq.com/s?__bizMzAxNzcxMzc5MQ&mid2247582483&idx3&sn38b94b4415ff29531e1619afe0c4df87&chksm9be29c03ac951515c28be526c987b19aedc1a5b3ad98ada5676e8c548f0f229665f495a0f281&token10630879&langzh_CN#rdCo…

Windows 11 绕过 TPM 方法总结,通用无 TPM 镜像下载 (2023 年 1 月更新)

在虚拟机、Mac 电脑和 TPM 不符合要求的旧电脑上安装 Windows 11 的通用方法总结 请访问原文链接:https://sysin.org/blog/windows-11-no-tpm/,查看最新版。原创作品,转载请保留出处。 作者主页:www.sysin.org 本文要解决的问题…

Qt 不规则窗口,不规则按钮,不规划控件 不规则界面

有一些特殊情况,需要使用不规则窗口或按钮,看起来非常炫酷。 类似: Qt 实现 不规则样式设置,不是视觉欺骗,是真正的不规则 ,点击外面不会触发按钮的点击信号. Part1:不规则窗口 效果&#xf…

【软考——系统架构师】信息系统基础

🔎这里是【软考——系统架构师】,关注我考试轻松过线 👍如果对你有帮助,给博主一个免费的点赞以示鼓励 欢迎各位🔎点赞👍评论收藏⭐️ 文章目录👀一、信息化概述👀二、信息系统工程总…

json-server环境搭建及使用

json-server环境搭建 一个在前端本地运行,可以存储json数据的server。 基于node环境,可以指定一个 json 文件作为 API 的数据源。 文章目录json-server环境搭建前提下载安装监听服务启动成功修改端口号方式一:方式二:数据操作测试…

[Datawhale][CS224W]图机器学习(二)

文章目录一、概述1.1 图的结构1.2 特征处理1.3 学习任务1.3.1 节点分类1.3.2 链接预测1.3.3 图级任务二、传统方法三、统计特征与核方法3.1 节点层面3.2 连接层面3.3 图层面3.4 节点袋参考文献Datawhale开源学习社区 x 同济子豪兄 Stanford课程中文精讲系列笔记本文同时发布在&…

揭秘涨薪50%经验:从功能测试到自动化测试,我是如何蜕变的?

本人在今年互联网大环境如此严峻的情况下,作为一个刚毕业不到一年的初级测试,赶在“金三银四”依然拿到了一些面试机会,并且成功拿下4家公司的offer,其中不乏互联网大厂,而且最高总包给到了接近double(无炫…

动态规划问题

目录 一、动态规划简介 二、利用动态规划解决问题 1、斐波拉契序列 2、拆分词句 3、三角形最小路径和 4、不同的路径数目(一) 5、带权值的最小路径和 6、求路径ii 7、01背包 8、不同子序列 9、编辑距离 10、分割回文串 一、动态规划…

Go 语言中的 Slice 陷阱:如何避免常见错误

Go 语言中的 Slice 陷阱:如何避免常见错误前言slice 作为函数 / 方法的参数进行传递的陷阱slice 通过 make 函数初始化,后续操作不当所造成的陷阱性能陷阱小结耐心和持久胜过激烈和狂热。 哈喽大家好,我是陈明勇,本文介绍的内容是…