Я относительно новичок в ThreadPoolExecutor
. Я вижу, могу ли я отслеживать выполнение, пока не будет выполненным и в afterExecute.ScheduledThreadPoolExecutor afterExecute runnable.toString отличается
Получив runnable.toString()
используя afterExecute(Runnable t, Throwable t)
. Теперь я понимаю, что могу просто поставить журнал внутри самого runnable ... но мне было любопытно, что этот метод будет производить.
Для ThreadPoolExecutor
, работает нормально, runnable.toString
- то же самое до execute(runnable)
, а также в afterExecute()
.
Однако! ScheduledThreadPoolExecutor
- другой. Его runnable.toString afterExecute совсем другой.
К примеру, до: [email protected]
, afterExecute: java.[email protected]zxc
Не даже название упак то же самое. Почему это?
private MyThreadPool() {
threadPool = new ThreadPoolExecutor(NUMBER_OF_CORES, MAX_CORES,
KEEP_ALIVE_TIME, KEEP_ALIVE_TIME_UNIT, workQueue) {
@Override
public void afterExecute(Runnable r, Throwable t) {
super.afterExecute(r, t);
Log.d(TAG, "ThreadOps onDone: " + r.toString());
// (A) will return same --> [email protected]
}
};
threadPool.setRejectedExecutionHandler(rejectedHandler);
scheduledThreadPool = new ScheduledThreadPoolExecutor(NUMBER_OF_CORES) {
@Override
public void afterExecute(Runnable r, Throwable t) {
super.afterExecute(r, t);
Log.d(TAG, "ThreadOps onDelayDone: " + r.toString());
// (D) does not return same?
// I am expecting --> [email protected] , but get...
// java.[email protected]zxc
}
};
scheduledThreadPool.setRejectedExecutionHandler(rejectedHandler);
}
public void execute(Runnable runnable) {
Log.d(TAG, "ThreadOps exe: " + runnable.toString());
// (A) lets say toString --> [email protected]
threadPool.execute(runnable);
}
public void delayExecute(Runnable runnable, long delayms) {
Log.d(TAG, "ThreadOps exe @" + delayms + ": " + runnable.toString());
// (D) lets say toString --> [email protected]
scheduledThreadPool.schedule(runnable, delayms, TimeUnit.MILLISECONDS);
}
Спасибо. Я вижу, поэтому он трансформируется в другой класс, а затем выполняется оттуда, что объясняет, почему toString полностью изменилась. – TWL