如何通过线程访问可运行的对象?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)

我有一个实现Runnable的类,我有一个List,它存储用该类的不同对象实例化的线程。如果线程对象正在运行,我如何访问底层对象的属性?以下是一个例子:

public class SO {
    public static class TestRunnable implements Runnable {
        public String foo = "hello";

        public void run() {
            foo = "world";
        }
    }

    public static void main(String[] args) {
        Thread t = new Thread(new TestRunnable());
        t.start();
        //How can I get the value of `foo` here?
    }
}
提问于
用户回答回答于

也许应该用List<Runnable>而不是(或除了)List<Thread>。或者你想要某种map,以便可以访问线程中的Runnable。(例如,java.util.HashMap<java.lang.Thread, java.lang.Runnable>)

用户回答回答于

如果任务抛出异常,未来将保存此异常,并在调用get()时抛出包装异常。

ExecutorService executor = Executors.newSingleThreadedExecutor();

Future<String> future = executor.submit(new Callable<String>() { 
   public String call() { 
      return "world"; 
   } 
}); 

String result = future.get(); 

扫码关注云+社区