0

我有一个关于可能的线程交错的问题,但我在这里可能错了。我将此代码段称为

处理上游(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 功能来强制执行订单吗?

谢谢。

4

0 回答 0