首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

FutureTask 不回来结果

2013-09-06 
FutureTask 不返回结果ExecutorService pool2 Executors.newSingleThreadExecutor()Future result2 p

FutureTask 不返回结果


ExecutorService pool2 = Executors.newSingleThreadExecutor();
Future result2 = pool2.submit(new FutureTask<String>(
new Callable<String>() {
public String call() throws Exception {
return "TEST";
}
}));

String res2 = (String) result2.get();
Thread.sleep(5000);
System.out.println(res2);// 结果怎么是null,我以为是 "TEST" 呢

结果为什么是null呢  java 线程池
[解决办法]
  public static void main(final String[] args) throws InterruptedException, ExecutionException {
    ExecutorService pool2 = Executors.newSingleThreadExecutor();
    Future<String> result2 = pool2.submit(new Callable<String>() {
      public String call() throws Exception {
        return "TEST";
      }
    });

    Thread.sleep(1000);
    String res2 = result2.get();
    System.out.println(res2);
  }

FutureTask要通过execute方法调用,submit直接传入callable。你这个程序如果用FutureTask来实现要这样:
  public static void main(final String[] args) throws InterruptedException, ExecutionException {
    ExecutorService pool2 = Executors.newSingleThreadExecutor();

    FutureTask<String> task = new FutureTask<>(new Callable<String>() {
      @Override
      public String call() throws Exception {
        return "TEST";
      }
    });
    pool2.execute(task);
    Thread.sleep(100);
    if (task.isDone())


      System.out.println(task.get());
    else
      System.err.println("Error executing task");
  }

热点排行
Bad Request.