Java 通道注册期间的线程块

Java 通道注册期间的线程块,java,netty,Java,Netty,在我的应用程序运行一段时间后,我的线程在等待通道注册时被卡住 代码如下: bootstrap = new Bootstrap() .group(new EpollEventLoopGroup()) .channel(EpollSocketChannel.class) .option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT) .handler(new MyChannelInitializer(t

在我的应用程序运行一段时间后,我的线程在等待通道注册时被卡住

代码如下:

bootstrap = new Bootstrap()
    .group(new EpollEventLoopGroup())
    .channel(EpollSocketChannel.class)
    .option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT)
    .handler(new MyChannelInitializer(this));

ChannelFuture registerFuture = bootstrap.register().sync();
Channel channel = registerFuture.channel();

//Do other stuffs

channel.connect(...).addListener(...);
运行一段时间后,线程在
sync()
期间阻塞

以下是stacktrace:

Name: worker-thread-1
State: WAITING on io.netty.channel.DefaultChannelPromise@17ba258
Total blocked: 37  Total waited: 43,574

Stack trace: 
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:502)
io.netty.util.concurrent.DefaultPromise.await(DefaultPromise.java:231)
io.netty.channel.DefaultChannelPromise.await(DefaultChannelPromise.java:131)
io.netty.channel.DefaultChannelPromise.await(DefaultChannelPromise.java:30)
io.netty.util.concurrent.DefaultPromise.sync(DefaultPromise.java:337)
io.netty.channel.DefaultChannelPromise.sync(DefaultChannelPromise.java:119)
io.netty.channel.DefaultChannelPromise.sync(DefaultChannelPromise.java:30)
...
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)  
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
java.lang.Thread.run(Thread.java:748)

为什么我的线程在这里被阻塞?还没有连接,只是创建了一个通道并将其注册到事件循环。

您应该进行线程转储,并检查是否以某种方式阻止了EventLoop。您应该进行线程转储,并检查是否以某种方式阻止了EventLoop。