`

异步方式调用同步方法

    博客分类:
  • JAVA
 
阅读更多

系统中同步方法很多,当串行时响应时间会比较长,有些调用可以异步来做,当需要结果时只要有就行。如果调用的方法本身就是异步的这个还好。但是因为很多方法都是同步实现的,所以急需要一种框架或者工具来实现同步方法的异步调用,我搜索了下没找到比较好的解决方案,不过也有一些可供参考的,这里总结下:

 

 

1:NET Framework提供的异步调用同步方法

 

使用异步方式调用同步方法

http://msdn.microsoft.com/zh-cn/library/2e08f6yc(v=vs.80).aspx

 

截取API使用方式如下:

 

 

// Create the delegate.
AsyncMethodCaller caller = new AsyncMethodCaller(ad.TestMethod);
       
// Initiate the asychronous call.
IAsyncResult result = caller.BeginInvoke(3000, 
                out threadId, null, null);

string returnValue = caller.EndInvoke(out threadId, result);
 

ad.TestMethod  就是需要异步调用的同步方法,可惜java没有这么简洁优美的语法。

 

2:目前找到的实现异步调用的java框架  asyn4j

http://code.google.com/p/asyn4j/

 

国人原创的,api还可以,还不支持future模式,但是支持也很简单。

 

 

3:spring 3.0提供的任务调度

 

http://static.springsource.org/spring/docs/3.0.5.RELEASE/reference/scheduling.html

 

API使用例子:

 

simplest case, the annotation may be applied to a void-returning method.

@Async
void doSomething() {
    // this will be executed asynchronously
}
Unlike the methods annotated with the @Scheduled annotation, these methods can expect arguments, because they will be invoked in the "normal" way by callers at runtime rather than from a scheduled task being managed by the container. For example, the following is a legitimate application of the @Async annotation.

@Async
void doSomething(String s) {
    // this will be executed asynchronously
}
Even methods that return a value can be invoked asynchronously. However, such methods are required to have a Future typed return value. This still provides the benefit of asynchronous execution so that the caller can perform other tasks prior to calling get() on that Future.

@Async
Future<String> returnSomething(int i) {
    // this will be executed asynchronously
}
 

 

分享到:
评论

相关推荐

    使用异步方式调用同步方法(实例详解)

    BeginInvoke 方法启动异步调用。该方法与您需要异步执行的方法具有相同的参数,还有另外两个可选参数。第一个参数是一个 AsyncCallback 委托,该委托引用在异步调用完成时要调用的方法。第二个参数是一个用户定义的...

    Nodejs让异步变成同步的方法

    今天小编就为大家分享一篇关于Nodejs让异步变成同步的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    Angular异步变同步处理方法

    今天小编就为大家分享一篇Angular异步变同步处理方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    Java异步调用转同步方法实例详解

    主要介绍了Java异步调用转同步方法实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    WebService同步异步调用示例代码.rar

    WebService同步异步调用示例代码。 完全自己写的,c#语言,sqlserver数据库,两网站之间调用

    ice同步调用和异步调用实例代码

    Ice 是一种针对客户端和服务器进行通信的面向对象的中间件平台。Ice 为构建面向对象的客户-服务器应用提供了工具、API 和库支持。...客户和服务器可以分别部署,可以运行在...本代码为ice同步调用和异步调用实例代码。

    python同步调用异步情况示例

    同步调异步

    同步或异步调用EXE(创建子进程并重定向子进程的输入、输出)

    写了个类,用以调用其他exe,可以以同步或异步方式调用,可以设置超时时长,exe运行中产生的输出信息也可捕获到。 见:http://blog.csdn.net/beanjoy/article/details/9167767

    Ajax异步与同步方法封装的js文件

    2 调用方法:(1)异步: MyAjax &quot; 要调用的方法页面 方法&quot; 参数 function d {alert d[&quot;d&quot;] ;} ; 2 同步:MyAjaxs &quot; 要调用的方法页面 方法&quot; 参数 function d {alert d[&quot;d&...

    C#同步调用,异步调用,异步回调.docx

    C#同步调用,异步调用,异步回调的详细使用说明以及注意事项,内含代码,亲测可行

    WCF 同步 异步调用 实例

    实现WCF 同步、异步调用请求实例, Winform 实现客户端 和服务端。

    C#同步异步操作说明

    同步方法和异步方法的区别 同步方法: 调用在程序继续执行之前需要等待同步方法执行完毕返回结果 异步方法: 则在被调用之后立即返回以便程序在被调用方法完成其任务的同时执行其它操作

    servlet tcp socket 异步转同步调用的两种解决办法

    场景如下图, ... 1,这里的服务端到认证是TCP 异步的。 2,终端到服务端是HTTP同步的。 这里需要服务端接收到认证返回的数据结果过后...附件代码是解决该问题的两种解决方案,可以用户同步的mina之类的socket调用。

    淘宝异步API调用示例代码 C#

    其调用方式,与其他同步的API调用方式无异,只是在调用-处理流程上采用异步化的方式。采用异步API的目的是希望大数据量的结果能够通过一种更高效的方式输出给外部,同时提高开发者的开发效率,可维护性,降低成本...

    C#TCP/IP同步和异步通信

    基于C#的TCP/IP同步以及异步通信实现方法,我已经把两种方法封装好了,直接调用就可以了,不仅可以实时获取连接的客户端,还可以实时刷新客户端连接,很好用的,如果有什么问题,欢迎联系我!

    ABAP 函数介绍

    有点介绍SAP 函数调用的方法,包含同步调用,异步调用

    python如何实现异步调用函数执行

    在实现异步调用之前我们先进行什么是同步调用和异步调用 同步:是指完成事务的逻辑,先执行第一个事务,如果阻塞了,会一直等待,直到这个事务完成,再执行第二个事务,顺序执行 异步:是和同步相对的,异步是指在...

    TCPIP通讯程序的编写

    异步编程概述 讨论基于 IAsyncResult 的异步设计模式,此模式...介绍以异步方式调用同步方法。 使用基于事件的异步模式进行多线程编程 介绍基于事件的异步模式,该模式提供使用事件进行跨线程通信的异步编程模型。

Global site tag (gtag.js) - Google Analytics