View Javadoc
1   /*
2    * Copyright 2012 The Netty Project
3    *
4    * The Netty Project licenses this file to you under the Apache License,
5    * version 2.0 (the "License"); you may not use this file except in compliance
6    * with the License. You may obtain a copy of the License at:
7    *
8    *   http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13   * License for the specific language governing permissions and limitations
14   * under the License.
15   */
16  package io.netty.channel;
17  
18  import io.netty.util.concurrent.ExecutorServiceFactory;
19  
20  import java.util.concurrent.Executor;
21  
22  /**
23   * {@link MultithreadEventLoopGroup} which must be used for the local transport.
24   */
25  public class DefaultEventLoopGroup extends MultithreadEventLoopGroup {
26  
27      /**
28       * Create a new instance that uses twice as many {@link EventLoop}s as there processors/cores
29       * available, as well as the default {@link Executor}.
30       *
31       * @see io.netty.util.concurrent.DefaultExecutorServiceFactory
32       */
33      public DefaultEventLoopGroup() {
34          this(0);
35      }
36  
37      /**
38       * @param nEventLoops       the number of {@link EventLoop}s that will be used by this instance.
39       *                          If {@code executor} is {@code null} this number will also be the parallelism
40       *                          requested from the default executor. It is generally advised for the number
41       *                          of {@link EventLoop}s and the number of {@link Thread}s used by the
42       *                          {@code executor} to lie very close together.
43       */
44      public DefaultEventLoopGroup(int nEventLoops) {
45          this(nEventLoops, (Executor) null);
46      }
47  
48      /**
49       * @param nEventLoops       the number of {@link EventLoop}s that will be used by this instance.
50       *                          If {@code executor} is {@code null} this number will also be the parallelism
51       *                          requested from the default executor. It is generally advised for the number
52       *                          of {@link EventLoop}s and the number of {@link Thread}s used by the
53       *                          {@code executor} to lie very close together.
54       * @param executor           the {@link Executor} to use, or {@code null} if the default should be used.
55       */
56      public DefaultEventLoopGroup(int nEventLoops, Executor executor) {
57          super(nEventLoops, executor);
58      }
59  
60      /**
61       * @param nEventLoops       the number of {@link EventLoop}s that will be used by this instance.
62       *                           If {@code executor} is {@code null} this number will also be the parallelism
63       *                           requested from the default executor. It is generally advised for the number
64       *                           of {@link EventLoop}s and the number of {@link Thread}s used by the
65       *                           {@code executor} to lie very close together.
66       * @param executorServiceFactory   the {@link ExecutorServiceFactory} to use, or {@code null} if the default
67       *                                 should be used.
68       */
69      public DefaultEventLoopGroup(int nEventLoops, ExecutorServiceFactory executorServiceFactory) {
70          super(nEventLoops, executorServiceFactory);
71      }
72  
73      @Override
74      protected EventLoop newChild(Executor executor, Object... args) throws Exception {
75          return new DefaultEventLoop(this, executor);
76      }
77  }