gpt4 book ai didi

通过 URLClassLoader 加载的 Java 插件运行后不返回

转载 作者:太空宇宙 更新时间:2023-11-04 07:02:18 25 4
gpt4 key购买 nike

BLUF:当我运行其中一个自定义插件时,在插件完成之前,执行不会返回到父级。

背景:我有一个父/插件设置,其中每个插件都实现一个基本接口(interface)

public interface PluginInterface {
public int load(String configFile);
public boolean run();
public boolean stop();
public boolean unload(boolean now);
}

我使用 URLClassLoader.newInstance() 从父应用程序加载插件。加载后,我调用插件接口(interface)函数 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() 后执行。所以我的问题是,我做错了什么以及为什么父级挂起直到插件完全完成?它们也不是短暂的任务,因此我希望插件线程会在某个时刻被挂起并发生上下文切换。

最佳答案

您可能需要 _ts.start();new Thread(_ts).start();

关于通过 URLClassLoader 加载的 Java 插件运行后不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21919709/

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