BLUF :当我运行我的一个自定义插件时,在插件完成之前,执行不会返回到父级。
背景: 我有一个父/插件设置,每个插件实现一个基本的接口
public interface PluginInterface {
public int load(String configFile);
public boolean run();
public boolean stop();
public boolean unload(boolean now);
}
我使用URLClassLoader.newInstance()从父应用加载插件。加载后,我调用插件接口函数load()并传递配置文件。到目前为止一切都很好。
在插件内部,run()实现为
@Override
public boolean run() {
if (_pbs == null)
return false;
//ThreadStart just implements Runnable and does the actual work
_ts = new ThreadStart(_pbs);
_ts.run();
return true;
}
本质上,我创建一个新线程来执行实际执行,以便run()可以返回到父级,并且可以继续执行。但这不会发生。在从插件完成其工作之后,才会从父节点调用run()后执行。所以我的问题是,我做错了什么,为什么父母一直挂起,直到插件完成?它们不是短暂的任务,所以我希望插件线程会在某个时刻暂停并发生上下文切换。
答案 0 :(得分:1)
您可能需要_ts.start();
或new Thread(_ts).start();