代码之家  ›  专栏  ›  技术社区  ›  leeeroy

向执行者提交FutureTask——为什么它有效?

  •  5
  • leeeroy  · 技术社区  · 16 年前

    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.FutureTask;
    
    class  MyTask extends FutureTask<String>{
        @Override
        protected void done() {
            System.out.println("Done");
        }
    
        public MyTask(Runnable runnable) {
            super(runnable,null);
        }
    }
    
    public class FutureTaskTest {
    
        public static void main(String[] args)  {
            ExecutorService executor = Executors.newSingleThreadExecutor();
            FutureTask<String> future = new MyTask(new Runnable() {
                public void run() {
                    System.out.println("Running");
                }
            });
    
            executor.submit(future);
    
            try {
                future.get();
            } catch (Exception ex ) {
                ex.printStackTrace();
            }
            executor.shutdownNow();
    
        }
    }
    

    public <T> Future<T> submit(Callable<T> task);
    public Future<?> submit(Runnable task);
    

    它如何知道我提交了一个FutureTask,并知道如何调用我覆盖的done()?

    2 回复  |  直到 16 年前
        1
  •  7
  •   erickson    16 年前

    Runnable run FutureTask )这就是所谓的 done 在适当的时候。遗嘱执行人没有直接致电 完成 .

        2
  •  1
  •   Jacob Mattison    16 年前