刚接触Netty,写的不好敬请谅解。
最近有一个需求,需要从客户端客户端定时的向服务器发送数据,通知服务器自己的一些状态信息,比如本地的cup使用率,内存使用率等信息,大体实现如下:
是用到了java提供的线程池,
newScheduledThreadPool:定长线程池,支持定时及周期性任务执行。
TestTask.java:
public class TestTask implements Runnable {
private final ChannelHandlerContext ctx;
public TestTask(ChannelHandlerContext ctx) {
this.ctx = ctx;
}
@Override
public void run() {
//do something
ctx.writeAndFlush(Unpooled.copiedBuffer(String.valueOf(System.currentTimeMillis()), CharsetUtil.UTF_8));
}
}
此类中的run方法可以执行其他的业务操作。
此处是客户端需要向服务器发送定时数据,故:
NettyClientHandler:
public class NettyClientHandler extends SimpleChannelInboundHandler<ByteBuf> {
private ScheduledExecutorService scheduler