我们的应用程序有许多实现基于ListenableFuture的API的服务,可以调整:

public interface MyService {

ListenableFuture getMyThing();

ListenableFuture> putMyThing(Thing thing);

}

由于我们的域模型根本不是线程安全的,因此我们在众所周知的单线程Executor上运行除了上述服务之外的大部分代码.我认为如果服务可以保证添加到他们生产的Futures的任何监听器都将在Executor上调用,那将是很好的.

当然,我可以通过使用适当的Executor参数调用ListenableFuture.addListener,Futures.addCallback或Futures.transform来很好地在服务的客户端中执行此操作,但我的目标是精确地降低复杂性和错误的可能性.客户端代码,所以我想在没有传递Executor参数的情况下调用这些方法时,在众所周知的Executor上发生侦听器调用.

所以,现在我一直在用这种方式实现服务的方法:

class MyServiceImpl {

private Executor executor; /* the "main" executor */

public ListenableFuture getMyThing() {

ListenableFuture future = ...; /* actual service call */

return Futures.transform(future, Functions.identity(), executor );

}

}

首先,这甚至有用吗?从番石榴来源看来,它似乎确实存在,但我很乐意进行某种确认,而且我在考虑对此进行单元测试时遇到了一些困难.

此外,我有点担心整个“服务回调指定线程(默认情况下)”模式的有用性/成本比.有没有人有这样的经历?这种方法有任何隐藏的陷阱吗?

java中对list监听_java – Guava:为ListenableFuture回调和监听器设置默认的Executor相关推荐

  1. java swing鼠标事件监听_java swing鼠标监听问题

    需要对一个JButton b添加一个监听事件达到创建一个自定义的Position(x,y)的对象: 监听类NewListen中需要用到鼠标在面板上点击取坐标值来完成创建一个Position(x,y)的 ...

  2. java session 数量_java中使用session监听实现同帐号登录限制、登录人数限制

    本文主要介绍了java中使用session监听实现同帐号登录限制.登录人数限制,具体代码如下: 问题域: 1.同帐号登录:若此帐号已登录,不可再次登录(与QQ模式相反). 2.登录人数限制,超过.已达 ...

  3. java jmenu 监听_Java中用得比较顺手的事件监听

    第一次听说监听是三年前,做一个webGIS的项目,当时对Listener的印象就是个"监视器",监视着界面的一举一动,一有动静就触发对应的响应. 一.概述 通过对界面的某一或某些操 ...

  4. java怎么快速创建监听类_java_利用java监听器实现在线人数统计,1.在工程中创建监听类SessionLi - phpStudy...

    利用java监听器实现在线人数统计 1.在工程中创建监听类SessionListener 并且实现HttpSessionListener接口,代码如下 import javax.servlet.htt ...

  5. java连接数据库12514_ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法...

    早上同事用PL/SQL连接虚拟机中的Oracle数据库,发现又报了"ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务"错误,帮其解决后,发现很多人遇到过这样的问 ...

  6. java毕业设计——基于java+Winpcap的局域网监听软件设计与实现(毕业论文+程序源码)——局域网监听软件

    基于java+Winpcap的局域网监听软件设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+Winpcap的局域网监听软件设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦 ...

  7. java 1.7 事件监听_17.7Listener监听器

    一.监听器介绍 1.1.监听器的概念 监听器 监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动.监听器其 实就是一个实现特定 ...

  8. Java 实现日志文件监听并读取相关数据

    Java 实现日志文件监听并读取相关数据 项目需求 由于所在数据中台项目组需要实现监听文件夹或者日志文件并读取对应格式的脏数据的需求,以便在文件.文件夹发生变化时进行相应的业务流程:所以在这里记录下相 ...

  9. python监听鼠标事件_Python中使用PyHook监听鼠标和键盘事件实例

    Python 中使用 PyHook 监听鼠标和键盘事件实例 PyHook 是一个基于 Python 的"钩子"库,主要用于监 听当前电脑上鼠标和键盘的事件.这个库依赖于另一个 Py ...

最新文章

  1. linux环境下搭建osm_web服务器一(Postgresql配置及osm2pgsql原始数据导入):
  2. 《C程序设计伴侣》诞生记
  3. 使用java底层实现邮件的发送(含测试,源码)
  4. 【codevs 1315】1315 摆花2012年NOIP全国联赛普及组(dp)
  5. EXCEL文件单独打开和单独关闭
  6. 入门级前端 简单的网页书写
  7. 初探ES6中的Map和WeakMap
  8. 尼康d850相机参数测试软件,尼康 - D850 - 产品介绍
  9. [Angular 2] Transclusion in Angular 2
  10. python:实现杨辉三角
  11. 全国所有火车站(12306官方客运营业站站点)很全!!
  12. 投资理财入门笔记【不定期更新编辑】
  13. 图片加水印怎么加?教你一个好操作的办法
  14. 5-大数据分析之 druid 介绍
  15. Android 防火墙 知乎,知乎客户端下午瘫痪,都是第三方防火墙变更害的
  16. Qt实现QQ截图中的马赛克效果
  17. 专利撰写教程网站合集
  18. notepad++无法安装插件问题
  19. 斯坦福大学公开课机器学习:Neural Networks,representation: non-linear hypotheses(为什么需要做非线性分类器)...
  20. spark task 任务状态管理

热门文章

  1. Linux环境使用命名空间编写一个简单的容器应用程序:namespace,container,cgroups
  2. OpenStack概念结构与逻辑架构:Conceptual architecture and Logical architecture
  3. php怎么把数组索引,如何在php中获取数组索引号?
  4. springboot实现条形码_Springboot转发重定向实现方式解析
  5. 64位 int 占几个字节_面试常考,项目易错,长文详解C/C++中的字节对齐
  6. sklearn之逻辑回归和岭回归
  7. oracle 序列_Oracle好记性不如烂笔头序列及日期时间的插入
  8. java string补空格_Java String字符串补0或空格详解
  9. fscanf不读取_NCNN-Breakdown(3) 读取网络的proto信息
  10. oracle简易数据库搭建,Oracle 10g 手工创建一个最简单的数据库