개발/Java
메인 스레드에서 생성한 자식 스레드에서 처리한 리턴 값 받기
yunzema
2018. 6. 4. 18:43
반응형
스레드에서 처리한 값을 메인 스레드에서 리턴받고 싶을 때 어떻게 하는가?
스레드 정의 부분에서 getter를 이용해 결과값을 반환하는 메서드를 정의
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public class CustomChildThread extends Thread{ private String SomethingResult; public void run(){ //무언가 HTTP로 요청을 하고 응답을 받아서 . . . SomethingResult = Response.toString(); } //결과값 리턴해주는 Getter public String getResult(){ return this.SomethingResult; } } | cs |
메인 스레드에서는 .join(); 이용해 자식 스레드의 run이 끝날때를 기다린다.
(http요청을 한 후 응답을 받아오고 난후 리턴을 받아야 내가 원하는 값이 들어있을테니 기다려야하겠지)
1 2 3 4 5 6 7 8 9 10 11 | CustomChildThread ChildThread = new CustomChildThread(); Thread.start(); try{ ChildThread.join(); }catch(Exception e){ e.printStackTrace(); } String ResultFromChildThread = ChildThread.getResult(); | cs |
이렇게 하면 정상적으로 자식스레드와 싱크를 맞춰 리턴값을 받아올 수 있다.
참고: http://plaboratory.org/archives/108