001
014
015 package com.liferay.portal.kernel.concurrent;
016
017
020 public class CallerRunsPolicy implements RejectedExecutionHandler {
021
022 @Override
023 public void rejectedExecution(
024 Runnable runnable, ThreadPoolExecutor threadPoolExecutor) {
025
026 if (threadPoolExecutor.isShutdown()) {
027 return;
028 }
029
030 ThreadPoolHandler threadPoolHandler =
031 threadPoolExecutor.getThreadPoolHandler();
032
033 Throwable throwable = null;
034
035 threadPoolHandler.beforeExecute(Thread.currentThread(), runnable);
036
037 try {
038 runnable.run();
039 }
040 catch (RuntimeException re) {
041 throwable = re;
042
043 throw re;
044 }
045 finally {
046 threadPoolHandler.afterExecute(runnable, throwable);
047 }
048 }
049
050 }