Java。线程完成而不是无限执行

时间:2018-08-28 10:53:53

标签: java multithreading testing

我有开发人员提供的jar。这个罐子包含 some.class.Executor 类,该类可以启动并起作用,直到我终止该进程。

有两种方法可以运行此类。

  1. 来自 main()类(作为入口点)。
  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()方法具有不同的行为?

0 个答案:

没有答案