diff --git a/netty/service/src/main/java/cn/bunny/service/netty/demo4/JdkFuture.java b/netty/service/src/main/java/cn/bunny/service/netty/demo4/JdkFuture.java new file mode 100644 index 0000000..5ed1e96 --- /dev/null +++ b/netty/service/src/main/java/cn/bunny/service/netty/demo4/JdkFuture.java @@ -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 future = service.submit(new Callable() { + @Override + public Integer call() throws Exception { + log.debug("执行计算"); + Thread.sleep(1000); + return 50; + } + }); + + log.debug("等待结果"); + log.debug("结果是 {}", future.get()); + } +} diff --git a/netty/service/src/main/java/cn/bunny/service/netty/demo4/NettyFuture.java b/netty/service/src/main/java/cn/bunny/service/netty/demo4/NettyFuture.java new file mode 100644 index 0000000..dc6d3b5 --- /dev/null +++ b/netty/service/src/main/java/cn/bunny/service/netty/demo4/NettyFuture.java @@ -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 future = eventLoop.submit(new Callable() { + @Override + public Integer call() throws Exception { + log.debug("执行计算"); + Thread.sleep(1000); + return 70; + } + }); + + // 同步方式等待结果 + log.debug("等待结果。。。"); + log.debug("结果是:{}", future.get()); + + // 异步方式接受结果 + future.addListener(new GenericFutureListener>() { + @Override + public void operationComplete(Future future) throws Exception { + log.debug("接受结果:{}", future.getNow()); + } + }); + } +}