1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.util.concurrent;
17
18 import java.util.concurrent.Executor;
19 import java.util.concurrent.ThreadFactory;
20
21
22
23
24
25 public final class DefaultEventExecutor extends SingleThreadEventExecutor {
26
27 public DefaultEventExecutor() {
28 this((EventExecutorGroup) null);
29 }
30
31 public DefaultEventExecutor(ThreadFactory threadFactory) {
32 this(null, threadFactory);
33 }
34
35 public DefaultEventExecutor(Executor executor) {
36 this(null, executor);
37 }
38
39 public DefaultEventExecutor(EventExecutorGroup parent) {
40 this(parent, new DefaultThreadFactory(DefaultEventExecutor.class));
41 }
42
43 public DefaultEventExecutor(EventExecutorGroup parent, ThreadFactory threadFactory) {
44 super(parent, threadFactory, true);
45 }
46
47 public DefaultEventExecutor(EventExecutorGroup parent, Executor executor) {
48 super(parent, executor, true);
49 }
50
51 public DefaultEventExecutor(EventExecutorGroup parent, ThreadFactory threadFactory, int maxPendingTasks,
52 RejectedExecutionHandler rejectedExecutionHandler) {
53 super(parent, threadFactory, true, maxPendingTasks, rejectedExecutionHandler);
54 }
55
56 public DefaultEventExecutor(EventExecutorGroup parent, Executor executor, int maxPendingTasks,
57 RejectedExecutionHandler rejectedExecutionHandler) {
58 super(parent, executor, true, maxPendingTasks, rejectedExecutionHandler);
59 }
60
61 @Override
62 protected void run() {
63 for (;;) {
64 Runnable task = takeTask();
65 if (task != null) {
66 runTask(task);
67 updateLastExecutionTime();
68 }
69
70 if (confirmShutdown()) {
71 break;
72 }
73 }
74 }
75 }