状态变量的认识-异步结构的核心

所有的异步结构都有一个或一组状态变量,利用状态变量,我们可以将业务逻辑拆分成小的模块。拆分有什么好处呢?可以将复杂的问题简化为多个简单的子问题,更容易处理。

举个例子,Java并发包里有个FutureTask类,主要作用是异步地做一些运算,返回运算结果。

FutureTask类有个状态state:

private volatile int state;
private static final int NEW          = 0;
private static final int COMPLETING   = 1;
private static final int NORMAL       = 2;
private static final int EXCEPTIONAL  = 3;
private static final int CANCELLED    = 4;
private static final int INTERRUPTING = 5;
private static final int INTERRUPTED  = 6;

你能看到在FutureTask的核心方法里,都有对state的处理,通过state将这些方法联系在一起了。get方法并不知道run方法有没有结束,也不用关心run方法有没有执行,get方法只需关注state状态,简化了关注点,功能很清晰。而run方法只关注执行Callable内的逻辑,依据执行结果设置state,不关心有没有线程执行了get方法。

复杂的程序都需要分层(模块化),分层是工程师的大道!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值