View Javadoc

1   package com.atlassian.event.internal;
2   
3   import com.atlassian.event.config.EventThreadPoolConfiguration;
4   
5   import java.util.concurrent.BlockingQueue;
6   import java.util.concurrent.Executor;
7   import java.util.concurrent.SynchronousQueue;
8   import java.util.concurrent.ThreadPoolExecutor;
9   
10  /**
11   * <p>Uses a {@link SynchronousQueue} to hand off tasks to the {@link Executor}. An attempt to to queue a task will fail if no threads are immediately available to run it</p>
12   *
13   * <p>See {@link ThreadPoolExecutor} for more information.</p>
14   *
15   * @since 2.1
16   */
17  public class DirectEventExecutorFactory extends AbstractEventExecutorFactory {
18      public DirectEventExecutorFactory(final EventThreadPoolConfiguration configuration, final EventThreadFactory eventThreadFactory) {
19          super(configuration, eventThreadFactory);
20      }
21  
22      public DirectEventExecutorFactory(final EventThreadPoolConfiguration configuration) {
23          super(configuration);
24      }
25  
26      /**
27       * @return a new {@link SynchronousQueue SynchronousQueue&lt;Runnable&gt;}
28       */
29      @Override
30      protected BlockingQueue<Runnable> getQueue() {
31          return new SynchronousQueue<Runnable>();
32      }
33  }