Hi All,

In our current code base , we are creating a execute service with fixed
size.Even we have used the separate execute services for the each component
, we can't guarantee the no of threads. That may leads to throw the
"RejectedExecutionHandler" when no of threads exceeds the predefined
executor service size.

Shall we use the blocking queue as following to overcome this issue.

final BlockingQueue<Runnable> queue =
    new ArrayBlockingQueue<Runnable>(QUEUE_SIZE);ThreadPoolExecutor
threadPool = new ThreadPoolExecutor(NUM_THREADS, NUM_THREADS,
       0L, TimeUnit.MILLISECONDS,
queue);threadPool.setRejectedExecutionHandler(new
RejectedExecutionHandler() {
   public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
          executor.getQueue().put(r);
   }});

By default the ThreadPoolExecutor will throw an exception when it size
is filled.But with this this we can block the job if the queue is full
without throwing the exception. WDYT?

Thanks,
Gayan



-- 

Gayan Gunarathne
Technical Lead, WSO2 Inc. (http://wso2.com)
Committer & PMC Member, Apache Stratos
email : gay...@wso2.com  | mobile : +94 775030545 <%2B94%20766819985>

Reply via email to