JAVA实现异步调用实例代码
在JAVA平台,实现异步调用的角色有如下三个角色:
调用者 取货凭证 真实数据
一个调用者在调用耗时操作,不能立即返回数据时,先返回一个取货凭证.然后在过一断时间后凭取货凭证来获取真正的数据.
在调用一个方法的时候,程序会进入被调用方法体内,执行完这个被调用方法后,才返回执行下一条语句。怎么做到像ajax异步请求一样,发送请求后,没等请求响应就执行下一条语句呢?对于java的异步请求,找了许多教材都没有找到,如thinking in java、core java2 ......等等。受多线程下载工具以及mootools的Request的启发,做了一个java版的Request,不知它的性能如何。
Request:请求载体
public class Request { private RequestContent rc;//请求主体 public Request(RequestContent rc){ this.rc=rc; } protected void start(){ //开始请求 final Thread t=new Thread(new Runnable(){ public void run(){ try{ rc.doSomeThing();//响应请求 }catch (Exception e) { e.printStackTrace(); rc.onFailure(); //如果执行失败 } rc.onSuccess();//如果执行成功 }} ); t.start(); } }
RequestContent:请求主体
abstract class RequestContent { void onSuccess(){ //执行成功的动作。用户可以覆盖此方法 System.out.println("onSuccess"); } void onFailure(){ //执行失败的动作。用户可以覆盖此方法 System.out.println("onFailure"); } abstract void doSomeThing(); //用户必须实现这个抽象方法,告诉子线程要做什么 }
Test:测试
new Request(new RequestContent(){ void doSomeThing(){ System.out.println("doSomething"); } void onSuccess(){ System.out.println("override onSuccess"); } }).start();
以上代码就是小编给大家分享的java实现异步调用,希望大家喜欢。
相关推荐
-
使用Jquery+Ajax+Json如何实现分页显示附JAVA+JQuery实现异步分页
先给大家展示下运行效果图: 1.后台action产生json数据. List blackList = blackService.getBlackInfoList(mobileNum, gatewayid, startDate, endDate); int totalRows = blackList.size(); StringBuffer sb = new StringBuffer(); sb.append("{\"totalCount\":\""+to
-
java异步上传图片示例
复制代码 代码如下: final File imageFile = new File(getCacheDir().getPath() + "/img/" + p.image); image.setVisibility(View.GONE); view.findViewById(R.id.imageLoading).setVisibility(View.VISIBLE); (new AsyncTask<Void, Void, Bitmap>() { @Override
-
java实现HttpClient异步请求资源的方法
本文实例讲述了java实现HttpClient异步请求资源的方法.分享给大家供大家参考.具体实现方法如下: package demo; import java.util.concurrent.CountDownLatch; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.nio.client.DefaultHttpAsyn
-
Java多线程实现异步调用的方法
在JAVA平台,实现异步调用的角色有如下三个角色:调用者 提货单 真实数据 一个调用者在调用耗时操作,不能立即返回数据时,先返回一个提货单.然后在过一断时间后凭提货单来获取真正的数据. 去蛋糕店买蛋糕,不需要等蛋糕做出来(假设现做要很长时间),只需要领个提货单就可以了(去干别的事情),等到蛋糕做好了,再拿提货单取蛋糕就可以了. public class Main { public static void main(String[] args) { System.out.println("ma
-
Java 异步编程实践_动力节点Java学院整理
什么是异步?为什么要用它? 异步编程提供了一个非阻塞的,事件驱动的编程模型. 这种编程模型利用系统中多核执行任务来提供并行,因此提供了应用的吞吐率.此处吞吐率是指在单位时间内所做任务的数量. 在这种编程方式下, 一个工作单元将独立于主应用线程而执行, 并且会将它的状态通知调用线程:成功,处理中或者失败. 我们需要异步来消除阻塞模型.其实异步编程模型可以使用同样的线程来处理多个请求, 这些请求不会阻塞这个线程.想象一个应用正在使用的线程正在执行任务, 然后等待任务完成才进行下一步. log框架就是
-
JAVA实现异步调用实例代码
在JAVA平台,实现异步调用的角色有如下三个角色: 调用者 取货凭证 真实数据 一个调用者在调用耗时操作,不能立即返回数据时,先返回一个取货凭证.然后在过一断时间后凭取货凭证来获取真正的数据. 在调用一个方法的时候,程序会进入被调用方法体内,执行完这个被调用方法后,才返回执行下一条语句.怎么做到像ajax异步请求一样,发送请求后,没等请求响应就执行下一条语句呢?对于java的异步请求,找了许多教材都没有找到,如thinking in java.core java2 ......等等.受多线程
-
Unity中C#和Java的相互调用实例代码
1.通过C#调用Java的方法: 在C#中添加调用的一些代码,利用Unity提供的一些接口实现调用Java! private const string JAVA_CLASS_Name = "com.unity3d.player.UnityPlayer"; private void CallJavaFunc(string javaFuncName, params object[] args) { try { //获取到AndroidJavaClass,至于这里为什么调用这个类,我也不是很
-
Java编程实现NBA赛事接口调用实例代码
第一步:找别人提供的接口,比如在这里我选择的是聚合数据提供的接口 第二步:要申请相应的AppKey方可使用,此参数会作为接口的参数调用. 第三步:调用别人提供的接口方法 代码如下: package juheapi.nba; /** * Created by Administrator on 2017/11/19/019. */ import net.sf.json.JSONObject; import java.io.*; import java.net.HttpURLConnection; i
-
java ThreadPoolExecutor 并发调用实例详解
java ThreadPoolExecutor 并发调用实例详解 概述 通常为了提供任务的处理速度,会使用一些并发模型,ThreadPoolExecutor中的invokeAll便是一种. 代码 package test.current; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.concurrent.Callable; import java.util
-
Java 冒泡排序、快速排序实例代码
冒泡排序 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地 进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端. 冒泡排序的算法实现如下:[排序后,数组从小到大排列] /** * 冒泡排序 * 比较相邻的元素.如果第一个比第二个大,就交换他们两个. * 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应
-
java多线程的同步方法实例代码
java多线程的同步方法实例代码 先看一个段有关银行存钱的代码: class Bank { private int sum; public void add(int num){ sum = sum + num; try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("total num is : " + sum); } } class Cu
-
Java上传视频实例代码
页面: 上传文件时的关键词:enctype="multipart/form-data" <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://&qu
-
Java方法递归调用实例解析
这篇文章主要介绍了Java方法递归调用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 /* 关于方法的递归调用 1.什么是递归? -方法自身调用自身 a(){ a(){ } } 2.递归是很耗费栈内存的,递归算法可以不用的时候尽量不用 3.一下程序运行的时候发生了这样一个错误[不是异常,是错误Error]: java.lang.StackOverflowErroe 栈内存溢出错误. 错误放生无法挽回,只有一个结果,就是JVM停止工作 4
-
AJAX实现简单的注册页面异步请求实例代码
AJAX简介 (1)AJAX = 异步 JavaScript 和 XML. (2)AJAX 是一种用于创建快速动态网页的技术. (3)通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. (4)传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面. 简单布局 JS先判断,把前端可以的判断做,减少服务器的交互 $('button').on('click',function(){; var boolu
-
Java 时间转换的实例代码
Java 时间转换的实例代码 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * Created by Edward on 2016/6/30. */ public class TimeUtil { /** * 将 1467341232351 转换为 指定格式 "yyyy-MM-dd HH:mm:ss.
随机推荐
- Linux traceroute命令使用方法实例详解
- VBS教程:方法-OpenTextFile 方法
- JQuery触发radio或checkbox的change事件
- JS实现消息来时让网页标题闪动效果的方法
- JavaScript中的parse()方法使用简介
- 详解用vue.js和laravel实现微信支付
- Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解
- ajax 操作全局监测,用户session失效的解决方法
- MongoDB为用户设置访问权限
- javascript 函数使用说明
- asp.net创建事务的方法
- js控制多图左右滚动切换效果代码分享
- Android进度条ProgressBar的实现代码
- Java实现文件的加密解密功能示例
- Android夜间模式最佳实践
- C++中指针和引用的区别分析
- electron demo项目npm install安装失败的解决方法
- vue动态改变背景图片demo分享
- Vue + Element UI图片上传控件使用详解
- vue实现PC端录音功能的实例代码