문제점 :
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 |
---|