한 걸음 한 걸음 자바 병렬 프로그래밍 모드를 배우는 Active Object 모드 (5) JDK 내장 구현 사용하기

1648 단어
지난 블로그를 통해 자바 병행 프로그래밍 모드의Active Object 모드를 한 걸음 한 걸음 배웠다. (4) 우리는 비슷한 서비스를 추가하면 날씨 서비스의 모든 코드를 다시 써야 한다는 것을 발견했다. 비록 이런 코드는 비슷하지만 다시 사용할 수 없다.이것은 우리가 대상을 대상으로 하는 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 프레임워크가 잘 봉인되어 있어 사용하기에 편리하다는 것을 알 수 있다.

좋은 웹페이지 즐겨찾기