我想在EmbeddedChannel中测试IdleStateHandler,但是它不起作用。这是我的代码:
public class IdleStateHandlerTest {
public static void main(String[] args) throws InterruptedException {
EmbeddedChannel channel = new EmbeddedChannel(new IdleStateHandler(1, 0, 0), new MyInHandler());
while (true) {
TimeUnit.SECONDS.sleep(1);
System.out.println(".");
}
}
private static class MyInHandler extends ChannelInboundHandlerAdapter {
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
System.out.println("event: " + evt);
}
}
}
我期望的是类似“ event:xxxx”的输出。但是它不会打印此消息。为什么?
答案 0 :(得分:0)
您将需要定期调用channel.runPendingTasks()
,因为EmbeddedChannel
只会执行调用线程中的所有内容,因此仅当您明确告诉它时才运行计划的任务。