先看一段代码:

    public Future<?> submit(Runnable task) {
if (task == null) throw new NullPointerException();
RunnableFuture<Void> ftask = newTaskFor(task, null);
execute(ftask);
return ftask;
}
 protected <T> RunnableFuture<T> newTaskFor(Runnable runnable, T value) {
return new FutureTask<T>(runnable, value);
}

注意,如果submit提交的参数传递的Runnable类型会将Runnable适配为一个FutureTask对象,但结果为null,及Future.get()的结果为null。

这会有一个问题:如果submit提交的参数本身就是一个FutureTask,那么他的结果也会被适配为null,导致与预期结果不符。解决办法,如果本省就是FutureTask,则使用execute方法提交。

 ListenableFutureTask<RecordSet> f = new SecondTaskFutureTask(new Callable<RecordSet>() {
@Override
public RecordSet call() throws Exception {
RecordSet rs = process.process(pw);
return rs;
}
});
ex.execute(f);
RecordSet rs = f.get();

最新文章

  1. sql查询
  2. Python之路,day3-Python基础
  3. 烂泥:学习mysql数据库主从同步复制原理
  4. ProgressDialog使用总结
  5. Mybatis保存数据时事务问题
  6. jquery事件切换hover/toggle
  7. Tomcat处理HTTP请求源码分析(上)(转)
  8. [King.yue]EXT.NET TextFieldFor添加正则表达式
  9. JavaScript、ES5和ES6的介绍和区别
  10. 【MySQL】MySQL的执行计划及索引优化
  11. Echarts地图使用经验-地图变形和添加数据
  12. 流媒体技术学习笔记之(十八)Ubuntu 16.04.3 如何编译 FFmpeg 记录
  13. 利用SMB jcifs实现对windows中的共享文件夹的操作
  14. grid布局合并单元格
  15. HDU 1513 &amp;&amp; POJ 1159 Palindrome (DP+LCS+滚动数组)
  16. 怎样用modelsim做后仿真
  17. CUGBACM Codeforces Tranning 1 题解
  18. dsPIC33EP 时钟初始化程序
  19. java实现 zip解压缩
  20. jQuery中$(function(){})与(function($){})(jQuery)、$(document).ready(function(){})等的区别讲解

热门文章

  1. 跨境B2B电商
  2. CocoStudio资源区导入Plist/PSD文件
  3. EDMX 残余表信息清理方法
  4. 好记性不如烂笔头-Mysql查找如何判断字段是否包含某个字符串
  5. C# 命名空间(Namespace)
  6. node全局变量process属性值(mac环境)
  7. 用ZedGraph控件作图圆
  8. Adjacent Bit Counts(uvalive)
  9. Javascript 键盘事件
  10. Echart ---超详细介绍