令人沮丧的是,HawtDispatch的网站将其描述为“线程池和NIO事件通知框架API。”
让我们首先考虑'线程池'部分。 Java提供的大多数Executor也基本上都是线程池。 HawtDispatch有何不同?
它显然也是“NIO事件通知框架API”。我假设它是顶层NIO上的一个薄层,它接收传入数据并传递给它的“线程池”概念,并在线程池调度程序找到时间时将其传递给使用者。正确? (欢迎对NIO进行任何改进)。有没有人对netty和HD做过任何性能分析?
答案 0 :(得分:17)
HawtDispatch旨在成为单个系统范围的固定大小的线程池。它提供了两种Java Executors实现:
Executors.newFixedThreadPool(n)
执行程序获得相同的效果)Executors.newSingleThreadExecutor()
执行程序获得相同的效果)与java executor模型不同,所有全局和串行调度队列共享一个固定大小的线程池。您可以使用数千个串行调度队列而不增加线程数。串行调度队列可以像Erlang邮箱一样用于驱动反应式actor风格的应用程序。
由于HawtDispatch使用固定大小的线程池来处理所有全局和串行队列执行,因此它执行的所有Runnable任务必须是非阻塞的。在某种程度上,这类似于NodeJS架构,除了它使用多个线程而不是一个线程。
与Netty相比,HawtDispatch不是实际处理套接字数据的框架。它没有提供编码/解码,缓冲和处理套接字数据的框架。它只是在非阻塞套接字上读取或写入数据时执行用户配置的Runnable。然后由应用程序来实际读取/写入套接字数据。