본문

[2018.05.27] 103. AsyncTask - execute VS executeOnExecutor

도입

이번 포스팅에서는 AsyncTask 클래스를 실행하는 방법인 

execute와 executeOnExecutor의 개념을 정리하고 차이점에 대해 알아볼 예정이다.


execute 개념

(출처 - https://developer.android.com/reference/android/os/AsyncTask)


executeOnExecutor 개념

(출처 - https://developer.android.com/reference/android/os/AsyncTask)


execute VS executeOnExecutor

execute는 API level3에서 추가되었고 executeOnExecutor는 API level11에서 추가되었다. 내 생각에는 executeOnExecutor가 execute를 포함하는 개념이다. 

execute

executeOnExecutor

Serially 처리 가능

Serially 처리 가능, Parallel 처리 가능


실습

 execute

 executeOnExecutor

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
AsyncTask task1 = new AsyncTask() {
    @Override
    protected Object doInBackground(Object[] objects) {
        for (int i = 0; i < 10; i++) {
            Log.e("heepie1""Task1 " + i);
            try {
                Thread.sleep(1000L);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
};
 
AsyncTask task2; // Log만 다르고 task1과 동일
 
task1.execute();
task2.execute();
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
AsyncTask task1 = new AsyncTask() {
    @Override
    protected Object doInBackground(Object[] objects) {
        for (int i = 0; i < 10; i++) {
            Log.e("heepie1""Task1 " + i);
            try {
                Thread.sleep(1000L);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
};
 
AsyncTask task2; // Log만 다르고 task1과 동일
 
task1.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
task2.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
cs

 

executeOnExecutor에 옵션을 설정하므로 execute와 동일하게 순차적으로 실행하는 것도 가능하다.



#AsyncTask #executeOnExecutor #execute

공유

댓글