有没有办法在java中实现Async方法调用除了线程和Executor?如果它由Executor实现,它会引入任何延迟吗?
答案 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();
}