功能:实现客户端向服务端定时发消息。
public class MyClientHandler extends ChannelInboundHandlerAdapter {
/**
* 给服务端发送消息
* @param ctx
* @throws Exception
*/
@Override
public void channelActive(ChannelHandlerContext ctx) throws RejectedExecutionException {
ctx.channel().eventLoop().scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
ctx.writeAndFlush(Unpooled.copiedBuffer("来自客户端的消息", CharsetUtil.UTF_8));
}
}, 1,3, TimeUnit.SECONDS);
}
---------------------省略其他方法-----------------------------
}
服务端接收的消息:
2、schedule的用法
ctx.channel().eventLoop().schedule(new Runnable() {
@Override
public void run() {
ctx.writeAndFlush(Unpooled.copiedBuffer("来自客户端的消息", CharsetUtil.UTF_8));
}
},3,TimeUnit.SECONDS);
方法说明:
/**
* 延迟执行,并不会周期性执行
* @param callable 延迟执行的任务
* @param delay 延迟时间
* @param unit 延迟时间单位
*/
public ScheduledFuture<?> schedule(Runnable command,long delay, TimeUnit unit);
/**
* 延迟执行,并不会周期性执行
* @param callable 延迟执行的任务
* @param delay 延迟时间
* @param unit 延迟时间单位
*/
public <V> ScheduledFuture<V> schedule(Callable<V> callable,long delay, TimeUnit unit);
/**
* 在延迟initialDelay后定时执行任务
* @param command 要执行的任务
* @param initialDelay 初始化延迟
* @param period 两次任务开始执行的延迟
* @param unit 时间单位
* @return
*/
public ScheduledFuture<?> scheduleAtFixedRate(Runnable command,
long initialDelay,
long period,
TimeUnit unit);
/**
* 在延迟initialDelay后定时执行任务
* @param command 要执行的任务
* @param initialDelay 初始化延迟
* @param delay 下一次任务开始距前一次任务结束的时间
* @param unit 时间单位
* @return
*/
public ScheduledFuture<?> scheduleWithFixedDelay(Runnable command,
long initialDelay,
long delay,
TimeUnit unit);