Nettys GlobalEventExecuter是否使用当前线程?

时间:2016-04-20 09:10:46

标签: java multithreading netty

根据Nettys Docs,GlobalEventExecutor

  

单线程单例EventExecutor

这意味着它使用一个线程并且只有一个实例。我在新线程中使用GlobalEventExecutor。该类是始终使用当前线程还是使用一个线程来完成所有操作?

如果第二个是正确的,那么意味着在Thread-Pool中使用GlobalEventExecutor并不是真的有意义。我会使用Thread-Pool代替我的Promises,但我必须像GlobalEventExecutor一样使它全局化。

我如何解决这个问题。

1 个答案:

答案 0 :(得分:2)

GlobalEventExecutor是一个基于单线程的事件执行程序。

如果在提交新任务时需要,此课程将start a new thread。该线程不与执行代码的线程共享。

即使您从多个类调用此全局实例,它也只会在后台使用单个线程来执行任务。

当此类检测到暂时没有提交任务时,它将关闭其内部线程,并在需要时再次重新创建它。默认时间为1秒。

This can be verified by looking at the source of GlobalEventExecutor