public abstract class SingleThreadEventExecutor extends AbstractScheduledEventExecutor implements OrderedEventExecutor
OrderedEventExecutor
的抽象基类,它在单个线程中执行所有提交的任务。
Modifier | Constructor and Description |
---|---|
protected |
SingleThreadEventExecutor(EventExecutorGroup parent, java.util.concurrent.Executor executor, boolean addTaskWakesUp)
创建一个新的实例
|
protected |
SingleThreadEventExecutor(EventExecutorGroup parent, java.util.concurrent.Executor executor, boolean addTaskWakesUp, int maxPendingTasks, RejectedExecutionHandler rejectedHandler)
创建一个新的实例
|
protected |
SingleThreadEventExecutor(EventExecutorGroup parent, java.util.concurrent.ThreadFactory threadFactory, boolean addTaskWakesUp)
创建一个新的实例
|
protected |
SingleThreadEventExecutor(EventExecutorGroup parent, java.util.concurrent.ThreadFactory threadFactory, boolean addTaskWakesUp, int maxPendingTasks, RejectedExecutionHandler rejectedHandler)
创建一个新的实例
|
Modifier and Type | Method and Description |
---|---|
void |
addShutdownHook(java.lang.Runnable task)
添加一个
Runnable 将在关闭此实例时执行
|
protected void |
addTask(java.lang.Runnable task)
将任务添加到任务队列,或者在此之前关闭此实例时抛出
RejectedExecutionException 。
|
protected void |
afterRunningAllTasks()
在从
runAllTasks() 和
runAllTasks(long) 返回之前调用。
|
boolean |
awaitTermination(long timeout, java.util.concurrent.TimeUnit unit) |
protected void |
cleanup()
无所作为,子类可能会覆盖
|
protected boolean |
confirmShutdown()
确认实例应该立即关闭!
|
protected long |
delayNanos(long currentTimeNanos)
返回执行最接近死线的计划任务之前剩余的时间量。
|
void |
execute(java.lang.Runnable task) |
protected boolean |
hasTasks() |
boolean |
inEventLoop(java.lang.Thread thread)
返回
true 如果给定
Thread 在事件循环中执行,
false 其他。
|
protected void |
interruptThread()
中断当前运行的
Thread 。
|
<T> java.util.List<java.util.concurrent.Future<T>> |
invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks) |
<T> java.util.List<java.util.concurrent.Future<T>> |
invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks, long timeout, java.util.concurrent.TimeUnit unit) |
<T> T |
invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks) |
<T> T |
invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks, long timeout, java.util.concurrent.TimeUnit unit) |
boolean |
isShutdown() |
boolean |
isShuttingDown()
返回 true 当且仅当所有EventExecutor 由该被管小号EventExecutorGroup 正在shut down gracefully或者被关闭。
|
boolean |
isTerminated() |
protected java.util.Queue<java.lang.Runnable> |
newTaskQueue()
已过时。
请使用并覆盖
newTaskQueue(int) 。
|
protected java.util.Queue<java.lang.Runnable> |
newTaskQueue(int maxPendingTasks)
创建一个新的
Queue ,它将保存要执行的任务。
|
protected java.lang.Runnable |
peekTask() |
int |
pendingTasks()
返回待处理任务的数量。
|
protected java.lang.Runnable |
pollTask() |
protected static java.lang.Runnable |
pollTaskFrom(java.util.Queue<java.lang.Runnable> taskQueue) |
protected static void |
reject() |
protected void |
reject(java.lang.Runnable task)
将任务提供给关联的 RejectedExecutionHandler 。
|
void |
removeShutdownHook(java.lang.Runnable task)
删除以前添加的
Runnable 作为关机挂钩
|
protected boolean |
removeTask(java.lang.Runnable task) |
protected abstract void |
run() |
protected boolean |
runAllTasks()
轮询任务队列中的所有任务,并通过
Runnable.run() 方法运行它们。
|
protected boolean |
runAllTasks(long timeoutNanos)
轮询任务队列中的所有任务,并通过
Runnable.run() 方法运行它们。
|
protected boolean |
runAllTasksFrom(java.util.Queue<java.lang.Runnable> taskQueue)
从传递的
taskQueue 运行所有任务。
|
void |
shutdown()
已过时。
|
Future<?> |
shutdownGracefully(long quietPeriod, long timeout, java.util.concurrent.TimeUnit unit)
该执行者表示该调用者希望执行者被关闭。
|
protected java.lang.Runnable |
takeTask()
从任务队列中取出下一个
Runnable ,如果当前没有任务存在,则会阻塞。
|
Future<?> |
terminationFuture()
返回 Future 当所有被通知EventExecutor 由该被管小号EventExecutorGroup 已经终止。
|
ThreadProperties |
threadProperties()
返回支持 SingleThreadEventExecutor 的Thread 的ThreadProperties 。
|
protected void |
updateLastExecutionTime()
更新内部时间戳,告知最近执行提交的任务的时间。
|
protected boolean |
wakesUpForTask(java.lang.Runnable task) |
protected void |
wakeup(boolean inEventLoop) |
cancelScheduledTasks, hasScheduledTasks, nanoTime, nextScheduledTaskNano, pollScheduledTask, pollScheduledTask, schedule, schedule, scheduleAtFixedRate, scheduleWithFixedDelay
inEventLoop, iterator, newFailedFuture, newProgressivePromise, newPromise, newSucceededFuture, newTaskFor, newTaskFor, next, parent, safeExecute, shutdownGracefully, shutdownNow, submit, submit, submit
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
inEventLoop, newFailedFuture, newProgressivePromise, newPromise, newSucceededFuture, next, parent
iterator, schedule, schedule, scheduleAtFixedRate, scheduleWithFixedDelay, shutdownGracefully, shutdownNow, submit, submit, submit
protected SingleThreadEventExecutor(EventExecutorGroup parent, java.util.concurrent.ThreadFactory threadFactory, boolean addTaskWakesUp)
parent
- EventExecutorGroup
这是此实例的父级,并且属于它
threadFactory
-在
ThreadFactory
将被用于使用
Thread
addTaskWakesUp
-
true
当且仅当调用
addTask(Runnable)
才会唤醒执行程序线程
protected SingleThreadEventExecutor(EventExecutorGroup parent, java.util.concurrent.ThreadFactory threadFactory, boolean addTaskWakesUp, int maxPendingTasks, RejectedExecutionHandler rejectedHandler)
parent
- EventExecutorGroup
,它是此实例的父代并属于它
threadFactory
-在
ThreadFactory
将被用于使用
Thread
addTaskWakesUp
-
true
当且仅当调用
addTask(Runnable)
才会唤醒执行程序线程
maxPendingTasks
- 新任务将被拒绝之前的最大未决任务数。
rejectedHandler
- 使用RejectedExecutionHandler
。
protected SingleThreadEventExecutor(EventExecutorGroup parent, java.util.concurrent.Executor executor, boolean addTaskWakesUp)
parent
- EventExecutorGroup
这是此实例的父级,并且属于它
executor
- 将用于执行的
Executor
addTaskWakesUp
-
true
当且仅当调用
addTask(Runnable)
才会唤醒执行程序线程
protected SingleThreadEventExecutor(EventExecutorGroup parent, java.util.concurrent.Executor executor, boolean addTaskWakesUp, int maxPendingTasks, RejectedExecutionHandler rejectedHandler)
parent
- EventExecutorGroup
,它是此实例的父级,属于它
executor
- 将用于执行的
Executor
addTaskWakesUp
-
true
当且仅当调用
addTask(Runnable)
才会唤醒执行程序线程
maxPendingTasks
- 新任务将被拒绝之前的最大未决任务数。
rejectedHandler
- 使用RejectedExecutionHandler
。
@Deprecated protected java.util.Queue<java.lang.Runnable> newTaskQueue()
newTaskQueue(int)
。
protected java.util.Queue<java.lang.Runnable> newTaskQueue(int maxPendingTasks)
Queue
,它将保存要执行的任务。
此默认实现将返回LinkedBlockingQueue
,但如果你的子类SingleThreadEventExecutor
不会做的这所有的阻塞调用Queue
它可能是有意义的@Override
这一点,并返回一些更高性能的实现,它完全不支持阻塞操作。
protected void interruptThread()
Thread
。
protected java.lang.Runnable pollTask()
Queue.poll()
protected static java.lang.Runnable pollTaskFrom(java.util.Queue<java.lang.Runnable> taskQueue)
protected java.lang.Runnable takeTask()
Runnable
一个Runnable
,如果当前没有任务存在,将会阻塞。
请注意,此方法将抛出一个UnsupportedOperationException
如果任务队列,这是通过创建newTaskQueue()
,没有实现BlockingQueue
。
null
如果执行程序线程被中断或唤醒。
protected java.lang.Runnable peekTask()
Queue.peek()
protected boolean hasTasks()
Collection.isEmpty()
public int pendingTasks()
protected void addTask(java.lang.Runnable task)
RejectedExecutionException
。
protected boolean removeTask(java.lang.Runnable task)
Collection.remove(Object)
protected boolean runAllTasks()
Runnable.run()
方法运行它们。
true
当且仅当至少有一个任务运行
protected final boolean runAllTasksFrom(java.util.Queue<java.lang.Runnable> taskQueue)
taskQueue
运行所有任务。
taskQueue
- 轮询和执行所有任务。
true
。
protected boolean runAllTasks(long timeoutNanos)
Runnable.run()
方法运行它们。
此方法停止运行任务队列中的任务,并在其运行时间超过timeoutNanos
返回。
@UnstableApi protected void afterRunningAllTasks()
runAllTasks()
和
runAllTasks(long)
返回之前调用。
protected long delayNanos(long currentTimeNanos)
protected void updateLastExecutionTime()
runAllTasks()
和runAllTasks(long)
自动更新此时间戳,因此通常不需要调用此方法。
但是,如果使用takeTask()
或pollTask()
手动执行任务,则必须在任务执行循环结束时调用此方法以进行精确的静默期检查。
protected abstract void run()
protected void cleanup()
protected void wakeup(boolean inEventLoop)
public boolean inEventLoop(java.lang.Thread thread)
EventExecutor
true
如果给定
Thread
在事件循环中执行,
false
其他。
inEventLoop
,界面
EventExecutor
public void addShutdownHook(java.lang.Runnable task)
Runnable
,将在关闭此实例时执行
public void removeShutdownHook(java.lang.Runnable task)
Runnable
作为关机挂钩
public Future<?> shutdownGracefully(long quietPeriod, long timeout, java.util.concurrent.TimeUnit unit)
EventExecutorGroup
复制的描述
EventExecutorGroup.isShuttingDown()
开始返回true
,执行程序准备自行关闭。
与EventExecutorGroup.shutdown()
不同,正常关机可确保在关闭之前不会提交“安静期” (通常是几秒钟)的任务。
如果任务在安静期提交,则保证被接受,安静期将重新开始。
shutdownGracefully
,界面
EventExecutorGroup
quietPeriod
- 文档中描述的安静期
timeout
- 不管在静默期间是否提交任务,等待执行程序为
EventExecutorGroup.shutdown()的最长时间
unit
-
quietPeriod
和
timeout
的单位
EventExecutorGroup.terminationFuture()
public Future<?> terminationFuture()
EventExecutorGroup
Future
当所有被通知EventExecutor
由该被管小号EventExecutorGroup
已经终止。
terminationFuture
在界面
EventExecutorGroup
@Deprecated public void shutdown()
shutdown
接口
EventExecutorGroup
shutdown
在界面
java.util.concurrent.ExecutorService
shutdown
在课堂
AbstractEventExecutor
public boolean isShuttingDown()
EventExecutorGroup
复制的描述
true
当且仅当所有EventExecutor
由该被管小号EventExecutorGroup
正在shut down gracefully或者被关闭。
isShuttingDown
,界面
EventExecutorGroup
public boolean isShutdown()
isShutdown
,界面
java.util.concurrent.ExecutorService
public boolean isTerminated()
isTerminated
,界面
java.util.concurrent.ExecutorService
protected boolean confirmShutdown()
public boolean awaitTermination(long timeout, java.util.concurrent.TimeUnit unit) throws java.lang.InterruptedException
awaitTermination
接口
java.util.concurrent.ExecutorService
java.lang.InterruptedException
public void execute(java.lang.Runnable task)
execute
,界面
java.util.concurrent.Executor
public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks) throws java.lang.InterruptedException, java.util.concurrent.ExecutionException
invokeAny
,界面
java.util.concurrent.ExecutorService
invokeAny
在课堂
java.util.concurrent.AbstractExecutorService
java.lang.InterruptedException
java.util.concurrent.ExecutionException
public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks, long timeout, java.util.concurrent.TimeUnit unit) throws java.lang.InterruptedException, java.util.concurrent.ExecutionException, java.util.concurrent.TimeoutException
invokeAny
,界面
java.util.concurrent.ExecutorService
invokeAny
在课堂
java.util.concurrent.AbstractExecutorService
java.lang.InterruptedException
java.util.concurrent.ExecutionException
java.util.concurrent.TimeoutException
public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks) throws java.lang.InterruptedException
invokeAll
,界面
java.util.concurrent.ExecutorService
invokeAll
在课堂
java.util.concurrent.AbstractExecutorService
java.lang.InterruptedException
public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks, long timeout, java.util.concurrent.TimeUnit unit) throws java.lang.InterruptedException
invokeAll
,界面
java.util.concurrent.ExecutorService
invokeAll
在课堂
java.util.concurrent.AbstractExecutorService
java.lang.InterruptedException
public final ThreadProperties threadProperties()
SingleThreadEventExecutor
的Thread
的ThreadProperties
。
如果SingleThreadEventExecutor
尚未启动,此操作将启动它并阻塞,直到它完全启动。
protected boolean wakesUpForTask(java.lang.Runnable task)
protected static void reject()
protected final void reject(java.lang.Runnable task)
RejectedExecutionHandler
。
task
- 拒绝。
Copyright © 2008–2018 The Netty Project. All rights reserved.