Java NIO 管道与阻塞队列

标签 java nio

我刚刚发现它有一个 NIO 工具,即 Java NIO Pipe,它专为在线程之间传递数据而设计。与通过队列传递更传统的消息(例如 ArrayBlockingQueue)相比,使用此机制是否有任何优势?

最佳答案

通常,传递数据供另一个线程处理的最简单方法是使用 ExecutorService。这包装了一个队列和一个线程池(可以有一个线程)

当你有一个支持 NIO channel 的库时,你可以使用管道。如果您想在线程之间传递数据的 ByteBuffers,它也很有用。

否则使用 ArrayBlockingQueue 通常更简单/更快。

如果您想要一种更快的方式在线程之间交换数据,我建议您查看 Exchanger但是它不像 ArrayBlockingQueue 那样通用。

The Exchanger and GC-less Java

关于Java NIO 管道与阻塞队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7558273/

相关文章:

java - 如何使用 JPA 和 Hibernate 为 2 个表建立单向 @oneToMany 关系

java - 在 RMI 注册表中设置类路径是否必要/重要?

Java 异步套接字 IO

java - 如何将一定数量的字节读入缓冲区?

java - 这个路径在java nio中的位置

java - 对显示的结果进行排序而不合并两个数组

java - 文件是否附加在文件字段中?

java - 如何释放JScrollpane使其不总是拖到底部?

java - 使用自签名证书和 SSLEngine (JSSE) 的 SSL 握手

java - 如何在 Netty 中将 EventExecutorGroup 与 NioDatagramChannel 一起使用?