gpt4 book ai didi

java - 使用 EJB 实现 Runnable over Extends Thread

转载 作者:行者123 更新时间:2023-11-30 08:16:39 24 4
gpt4 key购买 nike

假设类 MyCoolProcess 具有我的应用程序的逻辑,需要在它自己的线程中调用它。我们将创建一个线程,调用它并继续应用程序。
这个类是一个EJB;用@Stateless注释

现在我们有了MyController类;这将调用一个新线程。

代码:

public class MyController {

@EJB
MyCoolProcess p;

public Response foo() {
Thread t = new Thread() {
public void run() {
p.run();
}
};
t.start();
// continues ...
}

}
<小时/>
@Stateless
public class MyCoolProcess {

public void run() {
// heavy task
}
}

工作正常;重点是......在该解决方案之前,我已经尝试过 Runnable 接口(interface)。这是我第一次想要的。方法是:

public class MyController {

@EJB
MyCoolProcess p;

public Response foo() {
Thread t = new Thread(p);
t.start();
// continues ...
}

}
<小时/>
@Stateless
public class MyCoolProcess implements Runnable {

@Override
public void run() {
// heavy task
}
}

那是行不通的。实际上,服务器无法启动。尝试注入(inject)依赖项时崩溃。如果我是 EJB,我就无法实现 Runnable 接口(interface),不是吗? 为什么

还有...有什么方法可以使用Runnable方式来代替匿名类吗?

最佳答案

来自 EJB 规范:

The enterprise bean must not attempt to manage threads. The enterprise bean must not attempt to start, stop, suspend, or resume a thread, or to change a thread’s priority or name. The enterprise bean must not attempt to manage thread groups.

参见Adam's Blog .

关于java - 使用 EJB 实现 Runnable over Extends Thread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29559499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com