From 995953b40c5ef002dcb2091893fb7e49168571a6 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Thu, 23 May 2024 15:56:38 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=96=B0=E5=A2=9E):=20:rocket:=20NettyFut?= =?UTF-8?q?ure=E8=8E=B7=E5=8F=96=E7=BB=93=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/inspectionProfiles/Project_Default.xml | 2 +- .../java/cn/bunny/demo5/TestAsyncFuture.java | 21 +++++++++++++++ .../java/cn/bunny/demo5/TestNettyFuture.java | 26 +++++++++++++++++++ .../test/java/cn/bunny/demo5/UdkFuture.java | 26 +++++++++++++++++++ 4 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 netty/service/src/test/java/cn/bunny/demo5/TestAsyncFuture.java create mode 100644 netty/service/src/test/java/cn/bunny/demo5/TestNettyFuture.java create mode 100644 netty/service/src/test/java/cn/bunny/demo5/UdkFuture.java diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml index 68cc5d4..7cbf688 100644 --- a/.idea/inspectionProfiles/Project_Default.xml +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -2,7 +2,7 @@ \ No newline at end of file diff --git a/netty/service/src/test/java/cn/bunny/demo5/TestAsyncFuture.java b/netty/service/src/test/java/cn/bunny/demo5/TestAsyncFuture.java new file mode 100644 index 0000000..01c608d --- /dev/null +++ b/netty/service/src/test/java/cn/bunny/demo5/TestAsyncFuture.java @@ -0,0 +1,21 @@ +package cn.bunny.demo5; + +import io.netty.channel.EventLoop; +import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.util.concurrent.Future; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class TestAsyncFuture { + public static void main(String[] args) { + NioEventLoopGroup loopGroup = new NioEventLoopGroup(); + EventLoop eventLoop = loopGroup.next(); + Future future = eventLoop.submit(() -> { + log.debug("执行计算..."); + Thread.sleep(1000); + return 70; + }); + + future.addListener(future1 -> log.debug("接受结果:{}", future1.getNow())); + } +} diff --git a/netty/service/src/test/java/cn/bunny/demo5/TestNettyFuture.java b/netty/service/src/test/java/cn/bunny/demo5/TestNettyFuture.java new file mode 100644 index 0000000..a66317d --- /dev/null +++ b/netty/service/src/test/java/cn/bunny/demo5/TestNettyFuture.java @@ -0,0 +1,26 @@ +package cn.bunny.demo5; + +import io.netty.channel.EventLoop; +import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.util.concurrent.Future; +import lombok.extern.slf4j.Slf4j; + +import java.util.concurrent.ExecutionException; + +@Slf4j +public class TestNettyFuture { + public static void main(String[] args) throws ExecutionException, InterruptedException { + NioEventLoopGroup group = new NioEventLoopGroup(); + EventLoop eventLoop = group.next(); + + Future future = eventLoop.submit(() -> { + Thread.sleep(1000); + return 70; + }); + + // 主线程通过 future 来获取结果 + log.debug("主线程等待结果"); + future.get(); + log.debug("结果是:{}", future.get()); + } +} diff --git a/netty/service/src/test/java/cn/bunny/demo5/UdkFuture.java b/netty/service/src/test/java/cn/bunny/demo5/UdkFuture.java new file mode 100644 index 0000000..83a2985 --- /dev/null +++ b/netty/service/src/test/java/cn/bunny/demo5/UdkFuture.java @@ -0,0 +1,26 @@ +package cn.bunny.demo5; + +import lombok.extern.slf4j.Slf4j; + +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + +@Slf4j +public class UdkFuture { + public static void main(String[] args) throws ExecutionException, InterruptedException { + // 线程池 + ExecutorService service = Executors.newFixedThreadPool(2); + // 提交任务 + Future future = service.submit(() -> { + Thread.sleep(1000); + return 50; + }); + + // 主线程通过 future 来获取结果 + log.debug("主线程等待结果"); + future.get(); + log.debug("结果是:{}", future.get()); + } +}