문제점 : 

for문 안에서 AsyncTask.execute() 실행 시 병렬로 처리되는 게 아니라 순차적으로 실행되는 오류가 있었음.


for(int i=0;i<50;i++){

    new AsyncTask<Void, Void, Void> {

        protected Void doInBackground(Void... voids) {

            connect(view.getId() == R.id.button_release);

            return null;

        }

    }.execute();
}


그러니까 위의 코드를 실행했다고 하면



                ↗ 일1 ↘

일 3개 시작 -> 일2  → 종료

                ↘ 일3  ↗


가 아닌


일 3개 시작 ->일1->일2->일3->종료


로 진행됨.



해결 : 


for(int i=0;i<50;i++){

    new AsyncTask<Void, Void, Void> {

        protected Void doInBackground(Void... voids) {

            connect(view.getId() == R.id.button_release);

            return null;

        }

    }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}


execute();

메소드 대신 

executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

를 사용해야 정상적으로 병렬로 처리가 된다.



참고 :


https://trend21c.tistory.com/1715

https://gist.github.com/benelog/5954649

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

JAVA SHA1 암호화  (0) 2018.07.20

+ Recent posts