일부 타사 라이브러리를 사용하여 비동기 프로토콜을 통해 서버에 연결하고 응답을 다시받습니다. 예를 들어, 방법은 사용자 이름으로 사용자 ID를 얻기 위해서는 다음과 같습니다Java의 콜백 및 익명 클래스에 대한 도움이 필요합니다.
이public int getUserid(String username) {
int userid = 0;
connection.call("getUserid", new Responder() {
public void onResult(final int result) {
System.out.println("userid: " + result);
//how to assign received value to userid and return it?
}
}, username);
//wait for response
while (userid == 0) {
try{
Thread.sleep(100);
} catch (Exception e) {}
}
return userid;
}
문제는 내가 (후 반환하기 위해) 방법에서 변수를 "용자 ID"로 서버 응답에서 "결과를"반환 할당 할 수 없습니다입니다 . 어떻게 해결할 수 있을까요? 아마 변수 변수가 아닌 클래스 변수에 할당 할 수 있지만 메서드 범위 내에서 유지하여 동시성 문제를 처리 할 필요가 없습니다.
감사합니다.
감사합니다. 그래도 두 번 이상 호출해야합니다 ... 어떤 Syncronization 모델을 의미합니까,이 ValueBox 객체에서 읽고 쓸 수 있습니까? 꽤 복잡 할 것입니다 ... – serg
문제는 userId를 처리하기 전에 getUserId를 여러 번 호출 할 수 있다는 것입니다 (예 : 처음 100ms 동안 5 개의 호출이 있다고 가정). 그러면 겹쳐 쓰기 등의 위험이 있습니다. 그런 상황에서 무엇을하고 싶습니까? – Uri
아마도 현재 요청이 완료 될 때까지 추가 요청을 처리하지 않을 것입니다. – serg