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

我们的应用程序有许多实现基于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 );

}

}

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值