如何在Java中实现异步方法调用?

时间:2012-02-28 16:43:06

标签: java asynchronous

有没有办法在java中实现Async方法调用除了线程和Executor?如果它由Executor实现,它会引入任何延迟吗?

4 个答案:

答案 0 :(得分:1)

在Java中使用Threads 的方式。 Executors只是将线程管理包装在更好的容器中的一种方法。

可能会引入延迟。如果线程忙于处理另一个任务,则会有延迟。否则,延迟基于OS上下文切换机制,其通常是非常敏感的(其反过来可以在多核架构上变化,并且基于超线程或类似技术的架构)。

答案 1 :(得分:1)

另一个选择是使用消息传递(JMS)来实现此类行为 同样在Java EE6会话Bean中,您可以使用@Asynchronous来调用方法Async。

答案 2 :(得分:0)

您可以使用DynamicProxy(核心java功能)在调用者和被调用者之间引入一个层。在代理中,您将方法调用表示为对象。立即返回并在单独的线程中调用该方法。问题仍然是如何将值返回给调用者。您是否计划在以后返回要返回的值?这可以使用回调方法解决。

答案 3 :(得分:-1)

您可以传入一个实现回调的类。

new A(instanceOfB);

someMethodOfA() {
    doSomething();
    instanceOfB.callback();
}