Java 콜백 함수 깊이 이해
개요:
이른바 리셋이란 클라이언트 프로그램 C가 서비스 프로그램 S의 어떤 함수 A를 호출하고 S가 언제 C의 어떤 함수 B를 반대로 호출하는 것이다. C에 대해 말하자면 이 B를 리셋 함수라고 한다.예를 들어 Win32 아래의 창 프로세스 함수는 전형적인 리셋 함수입니다.일반적으로 말하면 C는 스스로 B를 호출하지 않는다. C가 B를 제공하는 목적은 S가 그것을 호출하도록 하는 것이다. 게다가 C는 어쩔 수 없이 제공해야 한다.S는 C가 제공한 B의 성함이 누구인지 모르기 때문에 S는 B의 인터페이스 규범(함수 원형)을 약정하고 C가 미리 S의 한 함수 R을 통해 S에게 B 함수를 사용할 것을 알려준다. 이 과정을 리셋 함수의 등록이라고 하고 R을 등록 함수라고 한다.웹 서비스와 자바의 RMI는 리셋 메커니즘을 사용하여 원격 서버 프로그램에 접근할 수 있다.
다음은 일반적인 예입니다.
어느 날, 내가 전화를 걸어 너에게 질문을 했는데, 당연히 어려운 문제였지,^_^,너는 일시적으로 해결 방법을 생각해 내지 못했고, 나는 또 전화를 들고 그곳에서 바보같이 기다릴 수 없었다. 그래서 우리는 네가 방법을 생각해 낸 후에 핸드폰으로 나에게 통지하면 나는 전화를 끊고 다른 일을 하러 가겠다고 약속했다.XX분이 지나자 내 핸드폰이 울렸어. 너는 흥겹게 문제가 이미 끝났으니 이렇게 이렇게 처리해야 한다고 말했다.이야기는 여기서 끝난다.이 예는'비동기+리셋'의 프로그래밍 모델을 설명한다.그 중에서 네가 나중에 핸드폰으로 나에게 결과를 알려주는 것은 바로'리셋'과정이다.내 핸드폰 번호는 반드시 이전에 너에게 알려줘야 한다. 이것이 바로 등록 리셋 함수이다.내 핸드폰 번호는 유효해야 하고 핸드폰이 당신의 호출을 받을 수 있어야 한다. 이것은 리셋 함수로서 반드시 인터페이스 규범에 부합해야 한다.
상기 개인을 통해 리셋이 더 많은 응용이 비동기적인 결합이라는 것을 느꼈다.예를 들어 Ajax에서 js는 구성 요소와 서버의 비동기적인 통신을 통해
예:
프로그래머 A는 프로그램 (프로그램 a) 을 썼는데, 그 중에는 리셋 함수 인터페이스가 미리 남아 있고, 이 프로그램을 봉인했다.프로그래머 B는 a로 하여금 자신의 프로그램 b의 방법을 호출하게 하려고 한다. 그래서 그는 a의 인터페이스를 통해 자신의 b의 방법을 리셋한다.목적 달성.C/C++에서 리셋 함수를 사용하려면 리셋 함수는 호출자에게 자신의 바늘 주소를 알려줘야 하는데 자바에 바늘이 없으면 어떻게 합니까?우리는 인터페이스 (interface) 를 통해 리셋 함수를 정의할 수 있다.
만약 내가 프로그래머 A라고 가정한다면, 다음은 나의 프로그램 a이다.
public class Caller
{
public MyCallInterface mc;
public void setCallfuc(MyCallInterface mc)
{
this.mc= mc;
}
public void call(){
this.mc.method();
}
}
프로그래머 B가 나의 정의에 따라 프로그램을 작성하여 인터페이스를 실현하도록 인터페이스를 정의해야 한다.
public interface MyCallInterface
{
public void method();
}
그래서 프로그래머 B는 이 인터페이스만 실현하면 리셋의 목적을 달성할 수 있다.
public class B implements MyCallInterface
{
public void method()
{
System.out.println(" ");
}
public static void main(String args[])
{
Caller call = new Caller();
call.setCallfuc(new B());
call.call();
}
}
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.