我有一个关于可能的线程交错的问题,但我在这里可能错了。我将此代码段称为
处理上游(ChannelHandlerContext ctx,ChannelEvent 事件)
private AtomicInteger metrics = new AtomicInteger();
if ( metrics.getAndSet( metrics.get() + 1 ) < 3 ){
mc.writeInt( readableBytes );
System.out.format( "Bytes [%d] ", readableBytes );
mc.writeLong( latency );
System.out.format( "Latency [%d]%n ", latency );
}
看起来有时写入会变得混乱。当我回读时,它们是错误的,打印语句也有问题。这些方法正在写入 NIO 直接缓冲区。
我应该在这里使用一些 java.util.concurrency 功能来强制执行订单吗?
谢谢。