안녕하세요. 효율적인 쓰레드 사용방법을 알고 싶어서 질문드립니다.
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까지 포함한 두개의 쓰레드를 실행하고 있쬬..
잘못된 방법같기도 하고 더 좋은 방법같기도 하고..
두방식의 차이가 있다면 뭘까요.. 어떤 방법이 더 효율적일까요?




자답.. 맞는지는 모르겠습니다.
여러개의 프로세스를 동시작업을 하면 속도, 리소스의 비용이 많이 들기 때문에
한개의 프로세스안에서 여러 쓰레드(작업단위)를 두어,
가벼운 프로세스를 여러개 돌리는 효과를 볼수 있따고 합니다.