asyncTask에사 가끔 RejectedExecutionException 발생합니다
찾아보니 너무 많은 쓰레드가 동시에 생성되면 그렇다고 해서 방법을 찾아보니
ThreadPoolExecutor 를 사용하면 된다고 하는데 정확한 사용법을 모르겠습니다
BlockingQueue workQueue; // gloval var
cursor = db.rawQuery("SELECT cable, title, bimg, _id FROM " + listDb, null);
while(cursor.moveToNext())
{
String dbCable = cursor.getString(0);
String dbTitle = cursor.getString(1);
String dbImg = cursor.getString(2);
int dbId = cursor.getInt(3);
//new AppTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,dbCable, dbTitle,dbImg,String.valueOf(alignOrder), String.valueOf(dbId));
ThreadPoolExecutor executor = new ThreadPoolExecutor(
5, // Initial pool size
128, // Max pool size
1, // KEEP_ALIVE_TIME
TimeUnit.SECONDS, // KEEP_ALIVE_TIME_UNIT
workQueue);
new AppTask().executeOnExecutor(executor,dbCable, dbTitle,dbImg,String.valueOf(alignOrder), String.valueOf(dbId));*/
}
또는
executor.execute(new Runnable()
{
@Override
public void run()
{
new AppTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,dbCable, dbTitle,dbImg,String.valueOf(alignOrder), String.valueOf(dbId));
}
});
이렇게 사용했는데 맞는건가요?(일단 동작은 됩니다)
제 폰에서 에러가 재현되면 고쳐졌는지 확인을 해볼텐데 제가 가진 폰들에서는 에러 재현이 안되서
제대로 사용했는지 궁금하네요 감사합니다