안녕하세요. 효율적인 쓰레드 사용방법을 알고 싶어서 질문드립니다.

 

 

protected void onStart() {
  super.onStart();
  mHandler.postDelayed(new Runnable() {
   public void run() {
    addItems();
    runOnUiThread(new Runnable() {
     public void run() {
      dialog.setVisibility(View.GONE);
      m_adapter.notifyDataSetChanged();
     }
    });

   }
  }, 100);

 

이렇게 구성된 onStart()가 있습니다. 엑티비티가 시작될때 실행되는 핸들러에 포함된 쓰레드죠..

addItem()은 웹에서 어레이리스트에 담고 UI쓰레드에서 담을걸 동기화 시켜주고 있습니다.

addItem()은 단순한 메소드 입니다.

 

그러나 이걸.

protected void onStart() {
super.onStart();
mHandler.postDelayed(new Runnable() {
public void run() {
addItems();

}
}, 100);

이렇게 한후

addItem() 메소드를

public void addItem(){

new Thread(new Runnable() {
   public void run() {

웹작업....
      runOnUiThread(new Runnable() {
       public void run() {
        dialog.setVisibility(View.GONE);
          m_adapter.notifyDataSetChanged();
       }
      });
     }    
   }
  ).start();

}

 

쓰레드화 시켰습니다. 언뜻보기엔 똑같애 보입니다.

그러나 제가 볼때 차이는 있어봅니다.

두번째거는 핸들러쓰레드 안에서 또하나의 UI까지 포함한 두개의 쓰레드를 실행하고 있쬬..

잘못된 방법같기도 하고 더 좋은 방법같기도 하고..

 

두방식의 차이가 있다면 뭘까요.. 어떤 방법이 더 효율적일까요?