如果异步方法仍在运行,那么另一个线程是否会使用无状态会话?

时间:2016-05-11 20:50:14

标签: java-ee asynchronous concurrency ejb

据我所知,没有两个线程可以同时使用无状态会话bean。

就我而言,我有两个无状态会话bean。在第二个bean中,我有一个异步方法。将从第一个bean调用此方法。

我的疑问是,在第一个bean调用了一个方法并成功返回后,第一个bean是否会被另一个线程使用?

以下代码

@Stateless
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public class MyBean {
    @EJB(beanName="AsyncBean")
    private AsyncBean asyncBean;
    public String call() {
        // some code here
        asyncBean.call();
        return result;
    }
}

@Stateless(name="asyncBean")
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public class AsyncBean {
    @Asynchronous
    public void call() {
        // some code which takes some time
    }
}

我想知道在线程X成功返回并且异步任务仍在运行之后,是否其他线程将使用MyBean无状态bean。

谢谢。

1 个答案:

答案 0 :(得分:2)

是的,EJB容器可以在第一个调用方法返回后立即重用MyBean实例。 EJB容器不会等待异步调用完成。