У меня есть базовый абстрактный класс. Существует несколько классов, которые простираются от этого класса. Они могут быть указаны как разные плагины. Тогда есть основной класс, который запускает эти плагины с помощью отражения. Мне нужно запустить каждый плагин в отдельном потоке. Ниже приведены строки, которые запускают плагины с использованием отражения.Запуск различных плагинов в разных потоках
Class<?> c = cl.loadClass(className);
if (className.endsWith(currentPlugin.messageListner)) {
// The MessageListner class found ...
TestMessageListener messageListner = null;
messageListner = (TestMessageListener) c.getConstructor(MessageBus.class, String.class)
.newInstance(messageBus, currentPlugin.initParam);
if (messageListner.start() == false) {
currentPlugin.loadStatus = "failed";
currentPlugin.errorCode = "Plugin start failed.";
} else {
currentPlugin.loadStatus = "success";
currentPlugin.errorCode = "";
}
break;
}
Так я подумал о обертывании выше сегмента кода в поток, как он будет выполнен для каждого плагин (Это внутри цикла в то время). Есть ли другие способы, которыми я мог бы это сделать? Ниже приведена структура моего базового класса.
public abstract class TestMessageListener implements MessageListener {
protected String initParam;
protected int instanceId;
public TestMessageListener(MessageBus messageBus, String initParam) {
if (messageBus == null) {
throw new NullPointerException();
}
this.messageBus = messageBus;
this.initParam = initParam;
String[] params = initParam.split(",");
if ((params.length >= 1) && !params[0].isEmpty()) {
// assign the first parameter as the instanceId
instanceId = Integer.parseInt(params[0]);
}
}
public abstract boolean start();
}
какой код нужно выполнить в отдельных thread.Is него метод запуска каждого messagelistner? –
Да, загрузка конструктора через отражение и вызов метода запуска. Эти две строки, которые мне нужно вызывать в отдельном потоке для каждого плагина. – mayooran
Почему вы кладете 'break;' после загрузки одного класса? Вам нужен только один класс/плагин для загрузки –