Java 基础之CallBack的使用
来源:互联网 发布:姓名贴软件 编辑:程序博客网 时间:2024/06/06 05:09
在很多情况我们都会希望这样一个过 程,在我们执行某个任务之后,我们都能得到一个返回值,便于我们任务后的处理;比如线程,我们new thread,自然希望得到thread执行后的结果并做一些处理。
- 我们实现线程两个,一个extends Thread(); 另一个implements
Runnable(),但这两个方法都有一个致命的缺陷就是取不到返回值;通常我们是通过使用共享变量(static变量)
线程见的通信来实现的如android handler 广播(Broadcast); - fulturetask 用来执行java超时操作 这是可以去做其他事情,过一段时间回来取得执行结果
/** * Created by jiangph on 16-1-10. */public class fultureTaskDemo { /*** * 我们传统上实现线程的两个方法,一个是继承Thread类;另一个是实现runnable接口 * 但是这两个方法都有致命的:就是取不到返回值;通常我们是通过使用共享变量(static变量) 线程见的通信来实现的如android handler 广播(Broadcast) * fulturetask 用来执行java超时操作 这是可以去做其他事情,过一段时间回来取得执行结果 */ /*** * fulture主要是来执行耗时的操作,同步下的异步操作 * */ public static void main(String[]args) { fultureTaskDemo fulturedemo=new fultureTaskDemo(); //初始化一个callable对象和fulturetask对象 Callable pAccount=fulturedemo.new PrivateAccount(); FutureTask futureTask=new FutureTask(pAccount); //使用fulturetask创建一个线程 Thread pAccountThread=new Thread(futureTask); System.out.println("fulturetask线程现在开始启动,启动时间为:"+System.nanoTime()); pAccountThread.start(); System.out.println("主线成开始执行其他人物"); //从其他账户获取总及呢 int totalMoney=new Random().nextInt(100000); System.out.println("现在你在其他账户中的总金额为" + totalMoney); System.out.println("等待私有账户总金额统计完毕..."); while (!futureTask.isDone()){ try { Thread.sleep(500); System.out.println("私有账户计算为完成继续等待..."); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("futureTask线程计算完毕,此时时间为" + System.nanoTime()); Integer privateAccountMoney=null; try{ privateAccountMoney=(Integer)futureTask.get(); }catch (InterruptedException e) { e.printStackTrace(); }catch (ExecutionException e) { e.printStackTrace(); } System.out.println("您现在的总金额为:" + totalMoney + privateAccountMoney.intValue()); } @SuppressWarnings("all") class PrivateAccount implements Callable{ Integer totalMoney; @Override public Object call() throws Exception { Thread.sleep(5000); totalMoney=new Integer(new Random().nextInt(10000)); System.out.println("您当前有" + totalMoney + "在您的私有账户中"); return totalMoney; } }}
当然我们也可以试着自己写一个callBack,通过匿名类,接口来实现
package CallBack;/** * Created by jiangph on 16-1-18. */public class TestCallBack { public static void main(String[]args) { new TestCallBackDao().useCallBack(new CallBackInterface() { @Override public void onCallBack() { System.out.println("1"); } }); }}//定义一个业务处理类class TestCallBackDao{ public void useCallBack(CallBackInterface callBackInterface) { //调用接口方法 callBackInterface.onCallBack(); }}interface CallBackInterface{ public void onCallBack();}
2 0
- Java 基础之CallBack的使用
- java之简单的Callback使用总结
- 回调Callback之Java
- callBack的使用。。
- JAVA 的callback机制
- java "回调【 Callback 】" 的理解和使用<借鉴>
- java "回调【 Callback 】" 的理解和使用<借鉴>
- Java thread中的callback和Future的简单使用
- Java干货之回头补基础(一) ——Callback机制个人理解及应用
- jsonp和callback的使用
- jsonp和callback的使用
- Java中CallBack的理解
- java中Callback的理解
- Java中CallBack的理解
- Java中CallBack的理解
- 好玩的java回调CallBack
- Java中CallBack的理解
- Java基础之循环的使用
- 程序设计常用的C++模板库(STL)
- VACCUM
- java 生成一组不重复的随机数
- python实现找到第i小的元素
- Java 中4种访问修饰符 public/protected/default(friendly)/private
- Java 基础之CallBack的使用
- HDU 1081 最大子矩阵(LCS_DP+前缀和)
- web前端小经验
- 上机题目(高级)- 两个超级大的整数相减 -运用Java 类解决(Java)
- errorlevel与%errorlevel%的区别
- C#中直接操作内存的方法
- windows下 VMware按装Linux是遇到的问题
- Windows系统下通过SecureCR搭建SSH2连接到Linux服务器
- PCL—低层次视觉—点云滤波(初步处理)