我刚刚发现它只有一个 NIO 工具,即 Java NIO Pipe,它是为在线程之间传递数据而设计的。与通过队列(例如 ArrayBlockingQueue)传递的更传统的消息相比,使用此机制是否有任何优势?
通常,将数据传递给另一个线程进行处理的最简单方法是使用 ExecutorService。这包装了一个队列和一个线程池(可以有一个线程)
当您有支持 NIO 通道的库时,您可以使用 Pipe。如果您想在线程之间传递数据的 ByteBuffer,它也很有用。
否则,使用 ArrayBlockingQueue 通常会更简单/更快。
如果您想要一种更快的方式在线程之间交换数据,我建议您查看交换器 http://download.oracle.com/javase/6/docs/api/java/util/concurrent/Exchanger.html然而它不像 ArrayBlockingQueue 那样通用。
Exchanger 和无 GC Java http://vanillajava.blogspot.com/2011/09/exchange-and-gc-less-java.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)