feat(新增): 🚀 NettyFuture同步和异步方式获取消息

This commit is contained in:
bunny 2024-05-24 09:26:07 +08:00
parent 88fd718975
commit 36221ffed1
2 changed files with 64 additions and 0 deletions

View File

@ -0,0 +1,25 @@
package cn.bunny.service.netty.demo4;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.*;
@Slf4j
public class JdkFuture {
public static void main(String[] args) throws ExecutionException, InterruptedException {
// 线程池
ExecutorService service = Executors.newFixedThreadPool(2);
// 提交任务
Future<Integer> future = service.submit(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
log.debug("执行计算");
Thread.sleep(1000);
return 50;
}
});
log.debug("等待结果");
log.debug("结果是 {}", future.get());
}
}

View File

@ -0,0 +1,39 @@
package cn.bunny.service.netty.demo4;
import io.netty.channel.EventLoop;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.util.concurrent.Future;
import io.netty.util.concurrent.GenericFutureListener;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
@Slf4j
public class NettyFuture {
public static void main(String[] args) throws ExecutionException, InterruptedException {
NioEventLoopGroup group = new NioEventLoopGroup();
EventLoop eventLoop = group.next();
Future<Integer> future = eventLoop.submit(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
log.debug("执行计算");
Thread.sleep(1000);
return 70;
}
});
// 同步方式等待结果
log.debug("等待结果。。。");
log.debug("结果是:{}", future.get());
// 异步方式接受结果
future.addListener(new GenericFutureListener<Future<? super Integer>>() {
@Override
public void operationComplete(Future<? super Integer> future) throws Exception {
log.debug("接受结果:{}", future.getNow());
}
});
}
}