一步步学习java并发编程模式之Active Object模式(五) 使用JDK的内置实现

       通过上一篇博客 一步步学习 java并发编程模式之Active Object模式(四) 我们发现,增加一个类似的服务,天气服务的所有代码都需要重写,虽然这些代码很相似,但是仍然不能复用。这是因为我们违反了面向对象的DIP原则,没有对代码进行合适的抽象。设计其实就是抽象,将业务相关代码和业务无关代码解耦、复杂多变的细节和相对稳定的抽象解耦,彼此通过接口进行依赖。完全与业务无关代码,基本上不再需要我们编写,数据库连接池、AOP框架等这些每个应用都会遇到的问题,已经有很成熟的开源组件,我们直接使用即可。我们要做的就是对自己的产品业务进行抽象,形成高层次的、相对稳定的逻辑和流程,与具体的实现细节分离开。扯远了,回到正题,我们的目的就是对天气服务和距离服务进行抽象,形成框架。

      jdk已经内置了对active Object模式的支持,我们看看怎么使用,这有助于我们设计和实现自己的active object框架

package activeobject.java;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class Test
{
    public static void main(String[] args) throws Exception
    {
        ExecutorService threadPool = Executors.newSingleThreadExecutor();

        Future<String> future = threadPool.submit(new WeatherTask());

        System.out.println("I am running.");

        System.out.println(future.get());

        threadPool.shutdown();
    }
}

class WeatherTask implements Callable<String>
{
    @Override
    public String call() throws Exception
    {
        Thread.sleep(5 * 1000);
        return "气温:28;风向/风力:西北风 1级;湿度:74%";
    }

}


可以看到,我们只需要编写真正的服务提供类,即WeatherTask,然后调用threadPool.submit()即可。可见JDK提供的Executor框架已经进行了良好的封装,使用起来很方便。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值