如何查看从未来对象执行的线程(名称)

How to see which thread(name) was executed from a future object

下面的代码是我创建一个提交给执行程序服务的实例,其结果是我存储在未来对象中的内容。有什么方法可以让我看到给出未来对象结果的线程的名称。例如,如果线程 1 return 整数值为 4,并且该值存储在未来的对象中。我怎么知道线程 1 是执行的线程并且 returned 了值 4?如果我没有正确解释,请随时澄清。

class Test implements Callable<Integer>{
  Integer i;
  String threadName;

   public Test(Integer i){
     this.i = i;
   }

  public Integer call() throws Exception{
    threadName = Thread.currentThread().getName();
    System.out.println(Thread.currentThread().getName());
    Thread.sleep(i * 1000);
    return i ;
  }

  public String toString(){
    return threadName;
  }
}

您可以 return 一个包含结果和线程名称的对象来代替 Integer

public static class ResultHolder {
    public Integer result;
    public String threadName;
}

[...]

public ResultHolder call() throws Exception {
    ResultHolder ret = new ResultHolder();
    ret.threadName = Thread.currentThread().getName();
    ret.result = i;
    Thread.sleep(i.intValue() * 1000);
    return ret;
}