Java 什么';在netty中,减少下游延迟的最佳方法是什么?

Java 什么';在netty中,减少下游延迟的最佳方法是什么?,java,netty,Java,Netty,我正在使用netty 5.0,发现当非IO线程启动下游操作时,IO线程执行任务需要几百微秒。下面是测量代码。我在两个地方测量时间,一个在非IO线程中,一个在IO线程中(实际上,在编码器出站处理程序中)。在非IO线程中,延迟约为200~300微秒,而在IO线程中,延迟仅为50~100纳秒。有没有办法将上下文切换的延迟降低到亚微秒 ChannelFuture f = b.bind(); ... ChannelPromise cp = f.channel().newPromise(); long cu

我正在使用netty 5.0,发现当非IO线程启动下游操作时,IO线程执行任务需要几百微秒。下面是测量代码。我在两个地方测量时间,一个在非IO线程中,一个在IO线程中(实际上,在编码器出站处理程序中)。在非IO线程中,延迟约为200~300微秒,而在IO线程中,延迟仅为50~100纳秒。有没有办法将上下文切换的延迟降低到亚微秒

ChannelFuture f = b.bind();
...
ChannelPromise cp = f.channel().newPromise();
long currentNano = System.nanoTime();
cp.addListener(() -> (System.out.println(System.nanoTime() - currentNano));
cp.channel().writeAndFlush(obj);

我在代码的其他部分使用了中断器模式,它可以在微秒以下完成线程之间的对象传递,所以我想在netty中也这样做。

我想看看其他人对此有什么看法:)。我要说的第一件事是Netty在内部不使用disruptor。因此,在最坏的情况下,让我们看看您可能会遇到哪些潜在的耗时操作…我可以看到一些您可能会在中遇到的
synchronized
块。除了
synchronized
块之外,通知机制还可能是a,然后是a。虽然disruptor倾向于竭尽全力避免上下文切换,但在Netty中,您可能更容易发生这种情况。看起来最好的情况是确保承诺在中完成,而在承诺完成时方法是真实的。这可以避免安排任务通知侦听器。