让我们说类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
界面。这是我第一次想要的。方法是:
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
}
}
这不起作用。实际上,服务器无法启动。崩溃试图注入依赖项。如果我不是EJB,我就无法实现接口Runnable
? 为什么
而且......有没有办法以Runnable
方式而不是匿名类?
答案 0 :(得分:1)