Java 实现函数回调
在Java里没用委托(delegate)这方法,所以想要实现回调还是有些麻烦。(想了解C#如何实现?请查看:http://www.cnblogs.com/Martin_Q/p/4478494.html)
那么在Java如何实现回调方式?其实在百度里搜一下一堆这样的教程,我也只是从上面的其中一篇抄下来,修改成自己想要的。
不过我的使用有点点不一样,在为我是在程序出现异常的时候再去主动调用回调的函数。而且异常部份的代码在一个Jar包里!少废话,下面开始:
public final class Dump{
private static final long CB_USER_FUNCTION_MILLIS = 200;
/**
* 回调函数接口
* @author Administrator
*/
public static interface CallBack{
void UserFunctionCB();
}
private static CallBack cbFunction;
/**
* 设置回调函数
* @param cbFun
*/
public static void setCallBackFunction(CallBack cbFun){
cbFunction = cbFun;
}
/**
* 当出现异常时会自动回调此函数,具体如何实现异常回调就不在这里详细描述了
*/
public static void hanleNDKException(){
if(cbFunction != null)
{
Thread th = new Thread()
{
@Override
public void run()
{
cbFunction.UserFunctionCB();
}
};
th.start();
try
{
// 允许用户的执行时间,超过时间后将不再管此线程执行结果
th.join(CB_USER_FUNCTION_MILLIS);
}
catch (InterruptedException e)
{
Logger.logError(LOG_TAG, "Callback user function on thread.join(millis) Error:", e);
}
}
// do something
}
}
外面调用的函数如何去实现UserFunctionCB这函数呢?相信大家都知道了。
public class TestCB{
public static void main(String[] args){
Dump.setCallBackFunction(new Dump.CallBack() {
@Override
public void UserFunctionCB() {
// 这里就是你需要实现的函数,回调的时候会执行你的这个函数
// 你可以在这里添加任意内容,不过你得保证他能在你的指定时间内完成
System.out.println("Hello Call Back Function!");
}
});
// 以下是一个异常触发的操作
String abc = null;
abc.toString();
}
}
到这里整个回调过程已经完成了,当出现任何异常的时候,都会去执行你的函数,去获取你想需要的一些内容!
Java 实现函数回调的更多相关文章
- Java中的回调函数学习
Java中的回调函数学习 博客分类: J2SE JavaJ# 一般来说分为以下几步: 声明回调函数的统一接口interface A,包含方法callback(); 在调用类caller内将该接口设置 ...
- Java中的回调函数学习-深入浅出
Java中的回调函数一般来说分为下面几步: 声明回调函数的统一接口interface A.包括方法callback(); 在调用类caller内将该接口设置为私有成员private A XXX; 在c ...
- jni不通过线程c回调java的函数 --总结
1.JNIEnv类型是一个指向全部JNI方法的指针.该指针只在创建它的线程有效,不能跨线程传递 2.JavaVM是虚拟机在JNI中的表示,一个JVM中只有一个JavaVM对象,这个对象是线程共享的. ...
- (翻译)理解Java当中的回调机制
原文地址:http://cleancodedevelopment-qualityseal.blogspot.com/2012/10/understanding-callbacks-with-java. ...
- 编程基础——C/C++,Java,ObjC讨论回调模式
什么是回调? 因为它是从C开始进入编程世界.术语改只是口.叫习惯了.java里通常叫listener(监听器).C/C++里通常叫callback(回调),ObjC里面叫delegate(托付) 回调 ...
- Java调用和回调总结(2)
Java调用和回调总结(2) 调用的种类 调用有3种, 普通调用(同步调用), 异步调用, 异步回调. 三种调用的特点 普通调用: 也叫做同步调用 , 最常见的调用, 会造成阻塞. 异步调用 : 异步 ...
- 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数
[源码下载] 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函 ...
- hive 调用java的函数和科学记数法转换
hive中field如果是string,比如id,那么使用10000000000+id结果是科学计数法显示,转换为正常显示方法: select (10000000000+cast(id as int) ...
- [Java]_函数传参的疑惑与思考
问题来源于leetcode上的两道题 Path Sum I && II,分别写了两个dfs. void dfs(TreeNode node , int sum , ArrayList& ...
随机推荐
- 数据库事务(Database Transaction)概述
事务概念 事务可以用很多很多不同的方式去定义.事务是数据库操作执行的一个逻辑工作单元,是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位.例如, 在关系数据库中, 一 ...
- elk平台搭建
很多时候我们需要对日志做一个集中式的处理,但是通常情况下这些日志都分布到n台机器上面,导致一个结果就是效率比较低,而ELK平台可以帮助我们解决这么一件事情: ELK下载:https://www.ela ...
- Andriod学习笔记1:代码优化总结1
多行变一行 比如说开发一个简单的计算器应用程序,需要定义0-9的数字按钮,第一次就习惯性地写出了如下代码: Button btn0; Button btn1; Button btn2; Button ...
- outerHTML
1,获取html结构:当前节点下的代码: jQuery.html() 是获取当前节点下的html代码,并不包含当前节点本身的代码: 2,jQuery.prop("outerHTML" ...
- Git-将已有的项目提交到Git
准备工作:1. 安装Githttp://git-scm.com/download/2.申请一个GitHub或者coding账号(coding为国产,不需FQ呦.两者方法基本相同,本文以coding为例 ...
- sublime text3点击ctrl+B无法运行Python程序?
1.打开sublime text 3 ,选择 tools-->Build System-->New Build System.... 2.将下面代码块复制进新文件中,并命名为Python. ...
- solr5.5 基于内置jetty配置 Ubuntu
下载地址:http://archive.apache.org/dist/lucene/solr/ 在你的目录下直接解压 tar -zxvf xxxxxx.tgz 现在就可以直接开启solr了bin/s ...
- [转] 传统 Ajax 已死,Fetch 永生
原谅我做一次标题党,Ajax 不会死,传统 Ajax 指的是 XMLHttpRequest(XHR),未来现在已被 Fetch 替代. 最近把阿里一个千万级 PV 的数据产品全部由 jQuery 的 ...
- 踩坑事件:不能对基于文本的临时表使用sql insert语句
先来描述一下问题: 如果你是从基于文本的数据源来创建DataFrame的,当你将DataFrame注册为临时表后,如果对这个临时表进行insert into 操作,会抛出异常的. 问题答案参见:htt ...
- Jmeter性能测试 入门
Jmeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率. 熟练使用Jmeter后, 能用Jmeter搞定的事情,你就不会使用LoadR ...