대가는 결과를 만든다

메인 스레드에서 생성한 자식 스레드에서 처리한 리턴 값 받기 본문

개발/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

'개발 > Java' 카테고리의 다른 글

for문 사용 방법 중 두번째 방법  (0) 2018.06.19
arraylist관련  (0) 2018.06.15
Comments