Java 비동기 리셋 메커니즘 실례 분석

Java 비동기식 콜백 메커니즘
1. 답조가 무엇입니까
리셋먼저 호출이 있어야만 호출자와 피호출자 간의 리셋이 있다.그래서 바이두 백과사전에는 다음과 같다.
소프트웨어 모듈 사이에는 항상 일정한 인터페이스가 존재한다. 호출 방식에서 그들을 세 가지로 나눌 수 있다. 그것이 바로 동기화 호출, 리셋과 비동기화 호출이다.
리셋은 특수한 호출로 세 가지 방식도 약간 다르다.
1. 동기화 리셋, 즉 막힘, 단방향.
2. 리턴, 즉 양방향(자전거와 유사한 두 개의 톱니바퀴).
3. 비동기 호출은 비동기 메시지를 통해 통지한다.
2. CS의 비동기식 콜백(Java 사례)
예를 들어 여기 아날로그 장면: 클라이언트가 msg를 서버에 보내고 서버가 처리한 후(5초), 클라이언트에게 리셋하여 처리가 성공했음을 알려줍니다.코드는 다음과 같습니다.
리셋 인터페이스 클래스:

/**
 * @author Jeff Lee
 * @since 2015-10-21 21:34:21
 *  - 
 */
public interface CSCallBack {
  public void process(String status);
}
아날로그 클라이언트:

/**
 * @author Jeff Lee
 * @since 2015-10-21 21:25:14
 *  - 
 */
public class Client implements CSCallBack {

  private Server server;

  public Client(Server server) {
    this.server = server;
  }

  public void sendMsg(final String msg){
    System.out.println(" : :" + msg);
    new Thread(new Runnable() {
      @Override
      public void run() {
        server.getClientMsg(Client.this,msg);
      }
    }).start();
    System.out.println(" : ");
  }

  @Override
  public void process(String status) {
    System.out.println(" : :" + status);
  }
}

아날로그 서버:

/**
 * @author Jeff Lee
 * @since 2015-10-21 21:24:15
 *  - 
 */
public class Server {

  public void getClientMsg(CSCallBack csCallBack , String msg) {
    System.out.println(" : :" + msg);

    //  
    try {
      Thread.sleep(5 * 1000);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
    System.out.println(" : ,  200");
    String status = "200";
    csCallBack.process(status);
  }
}

테스트 클래스:

/**
 * @author Jeff Lee
 * @since 2015-10-21 21:24:15
 *  - 
 */
public class CallBackTest {
  public static void main(String[] args) {
    Server server = new Server();
    Client client = new Client(server);

    client.sendMsg("Server,Hello~");
  }
}

다음 테스트 클래스 실행 - 인쇄 결과는 다음과 같습니다.
클라이언트: 보내는 메시지: Server, Hello~
클라이언트: 비동기식 전송 성공
서버: 서버가 클라이언트로부터 받은 메시지는 서버, Hello~
(여기 아날로그 서버 데이터 처리 시간, 5초 대기)
서버: 데이터 처리 성공, 성공 상태 200 반환
클라이언트: 서버 콜백 상태: 200
한 걸음 한 걸음 코드를 분석하면 핵심은 다음과 같다.
1. 인터페이스는 방법 매개 변수로서 실제 전입 인용은 실현 클래스를 가리킨다
2. 클라이언트의sendMsg 방법에서 매개 변수는final입니다. 내부 클래스에 의해 새로운 라인을 사용할 수 있기 때문입니다.여기에는 비동기가 나타난다.
3. 서버의 getClientMsg () 를 호출하고 매개 변수가 클라이언트 자체에 전달됩니다 (첫 번째 점에 대응).
3. 리셋의 응용 장면
리셋은 현재 어떤 장면에 많이 활용되고 있습니까?운영 체제에서 개발자로 호출:
1. Windows 플랫폼의 메시지 메커니즘
2. 비동기적으로 위챗 인터페이스를 호출하여 위챗 반환 상태에 따라 업무 논리에 응답한다.
3. Servlet의 Filter (필터) 는 콜백 함수를 기반으로 하며 컨테이너 지원이 필요합니다.
추가: 그 중에서 Filter(필터)와 Interceptor(차단기)의 차이점은 차단기는 Java의 반사 메커니즘을 바탕으로 하고 용기와 무관하다.그러나 리셋 메커니즘과 이곡동공의 묘미가 있다.
한 마디로 하면 이 디자인은 하부 코드로 하여금 고위층 정의(실현층)의 하위 프로그램을 호출하게 하여 프로그램의 유연성을 강화시켰다.
4. 패턴 비교
Filter와 Intercepter는 이곡동공의 묘미를 지니고 있다고 합니다.사실 인터페이스 리셋 메커니즘과 디자인 모델인 관찰자 모델도 비슷한 점이 있다.
관찰자 모드:
GOF는 "대상의 일대다 의존 관계를 정의하고 대상의 상태가 바뀌면 그에 의존하는 모든 대상이 통지되고 업데이트된다"고 말했다.그것은 일종의 모델로 인터페이스 리셋의 방법을 통해 실현된 것이다. 즉, 이것은 리셋의 구현이다.
인터페이스 콜백:
관찰자 모델과의 차이점은 그것이 구체적인 실현이 아니라 원리라는 것이다.
생각
4단계 요약:
메커니즘, 즉 원리다.
패턴, 즉 구현.
구체적인 장면, 흔히 볼 수 있는 패턴을 기억해라.
그리고 원리를 깊이 이해하다.
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기