이 블로그 검색

2014년 7월 10일 목요일

Thread Join() 함수

멀티 쓰레드 처리를 해야 될 때 서브 쓰레드에서 처리된 결과 값을 메인 쓰레드가 받아서 처리를 해야 되는 경우가 종종 있다.
 이럴 때 문제가 되는 것은 메인 쓰레드와 서브 쓰레드가 동시에 병렬로 처리가 되기 때문에 서브 쓰레드에서 결과 값을 받기도 전에 메인 쓰레드에서 진행이 되어 원하는 값을 set 하지 못하는 경우가 있다.  (보통 이런 경우 Null 이나 빈값이 많이 들어간다.)

 이 경우 메인 쓰레드를 서브 쓰레드가 연산이 끝날때까지 hold(정지) 시켜 놓아야 되는데, 그럴 때 사용하는 것이 join() 메서드이다.

ex)

mThread.start();   // Thread 시작

Log.d("meme", "  filteredThBoxList => " + filteredThBoxList.size());

try {
   mThread.join();    // join() 을 사용하면 서브 쓰레드가 끝날때까지 메인 쓰레드는 대기한다.
} catch (InterruptedException e) {
   // TODO Auto-generated catch block
e.printStackTrace();
}


return filteredThBoxList;   // filteredThBoxList 이 변수에 mThread에서 처리한 결과 값을 넣고 리턴을 해야 된다.

댓글 없음:

댓글 쓰기