Джава. Завершение потока вместо выполнения бесконечности - PullRequest
0 голосов
/ 28 августа 2018

У меня есть банка от разработчика. Этот jar содержит класс some.class.Executor , который может быть запущен и работает, пока я не убью процесс.

Есть два способа запустить этот класс.

  1. Из main () class (как точка входа).
  2. Из темы.

Первый вариант прост:

public static void main(String[] args) {
    some.class.Executor.main(args);
}

И это прекрасно работает. Но когда я пытаюсь запустить это из моей темы, как:

public class CustomExecutor extends AbstractExecutor {

public CustomExecutor(String scenario) {
    this.args[0] = scenario;
}

@Override
public String generateName() {
    return CustomExecutor.class.getSimpleName() + "-" + UUID.randomUUID().toString();
}

public void run() {
    some.class.Executor.main(getArgs());
}

Аннотация исполнителя просто:

public abstract class AbstractExecutor extends Thread {

protected String[] args;

AbstractExecutor() {
    this.args = new String[1];
    setName(generateName());
    setDaemon(false);
}

public abstract String generateName();

public void register() {
    WorkerStorage.getInstance().add(getName(), this);
}

public void launch() {
    register();
    WorkerStorage.getInstance().getThreadMap().get(getName()).start();
}

Так что в основном я использую тот же метод, но из моего потока. И это умирает. Измените состояние потока на TERMINATED .

Есть большая разница между двумя вариантами запуска? Почему метод main () имеет другое поведение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...