Java 플랫폼에서 비동기 통화를 구현하는 역할은 다음과 같은 세 가지 역할을합니다. 선하 증권의 발신자의 실제 데이터
발신자는 시간이 많이 걸리는 작업을 호출하고 즉시 데이터를 반환 할 수 없을 때 먼저 선하 증권을 반환하면 실제 데이터가 선하 청구서를 사용하여 얻습니다.
케이크를 사려고 케이크 가게에 가서 케이크를 만들 때까지 기다릴 필요가 없습니다 (만들기까지 오랜 시간이 걸리면). 케이크가 준비되면 선하 증권을 얻을 수 있습니다. 케이크는 괜찮습니다.
공개 클래스 {public static void main (string [] args) { "메인 시작"); data2 = request (20, 'b'); Catch (InterpruptedException e) {} system.out.println ( "Main OtherJob end"); "data1 =" + data1.getContent (); data2.getContent ());
여기의 주요 클래스는 "고객"과 동일하며 호스트는 "Cake Shop"과 동일합니다. 실제 "케이크"가 아니라 단일을 집어 올리는 것과 같습니다. 일정 기간이 지나면 (일정 기간 동안 수면 후) Data1.getContent ()에게 전화를 걸어 실행 결과를 얻기 위해 선하 증권을 얻는 것을 의미합니다.
고객이 케이크를 주문한 후 케이크 가게가 한 일을 살펴 보겠습니다.
공개 클래스 호스트 {public data request (Final int count, final char c) {System.out.println ( "request (" + count + "," + c + ")); Entity Final Futuredata Future = New Futuredata (); (2) RealData 엔티티를 설정하려면 새 스레드를 시작하기 위해 {public void run () {// count, future 및 conyon. 내부 수업. RealData RealData = Count, C); // (3) Futuredata 엔티티를 반환 값으로 검색}}.
요청을받은 후 호스트 ( "Cake Shop")는 "LATING"FUTEUDETA의 인스턴스 미래가되었으며, 케이크 제작자는 케이크를 만드는 것과 동일합니다. . 그런 다음 호스트가 고객에게 반환하는 것은 케이크가 아닌 "선하 책"미래입니다. 케이크가 완성 된 후 케이크 제조업체는 해당 "선하 책"케이크, 즉 Future.SetRealData (RealData)를 줄 수 있습니다.
케이크 메이커가 케이크를 만드는 방법을 살펴 보겠습니다.
Count C 문자를 포함하는 문자열을 만들어보십시오. 위반이 불법이며 수면이 사용됩니다.
Public Class RealData는 데이터를 구현합니다. {private final string 컨텐츠; buffer = count]; .println ( " + count +", " + c +");
이제 "선하 증권"미래가 케이크의 "내용"에 어떻게 일치하는지 살펴 보겠습니다.
Public Class는 데이터를 구현합니다 {private realdata realdata = null; } realData = ready = true (); ();}}
고객이 자신의 사업을 마치면 케이크를 집어 들기 위해 자신의 "선하 책"을 가져갑니다.
System.out.println ( "data1 =" + data1.getContent ());
케이크가 준비되지 않은 경우 기다려야합니다.
while (! ready) {try {wait ()} catch (interruptedException e) {} // realdata.getContent () 만 완료 한 후에 얻을 수 있습니다.
프로그램 분석
각 요청마다 호스트는 고객이 필요한 "케이크"를 생성하는 스레드를 생성합니다. 잠시 기다린 후 케이크가 준비되지 않으면 고객은 기다려야합니다. 고객은 "케이크가 만들어 질 때까지만 케이크를 가져갈 수 있습니다.
각 스레드는 특정 고객에게 필요한 "케이크"를 만드는 책임이 있습니다. 즉, 고객 A는 Cake Master A에 해당하고 고객 B는 Cake Master B에 해당합니다. 고객 B의 케이크가 먼저 준비 되더라도 고객 A는 케이크 마스터 A가 케이크를 준비 할 때까지 기다릴 수 있습니다. 다시 말해, 고객간에 경쟁 관계는 없습니다.
Futuredata의 두 가지 방법은 실제로 Cake Master A와 고객 A의 상호 배타적 인 관계, 즉 Cake Master A가 케이크를 가져 가기 전에 대기해야합니다. 케이크가 준비되었는지 여부는 중요합니다.
이 기사는 모든 사람이 간단합니다.