diff --git a/.idea/misc.xml b/.idea/misc.xml index 9b83232..fb0bd54 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -14,7 +14,7 @@ - + \ No newline at end of file diff --git a/service/service-acl/src/test/java/Demo1.java b/service/service-acl/src/test/java/Demo1.java new file mode 100644 index 0000000..f870d09 --- /dev/null +++ b/service/service-acl/src/test/java/Demo1.java @@ -0,0 +1,20 @@ +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +public class Demo1 { + /** + * * runAsync + * 不返回返回值 + */ + public static void main(String[] args) { + ExecutorService executorService = Executors.newFixedThreadPool(3); + System.out.println("main begin...."); + CompletableFuture completableFuture = CompletableFuture.runAsync(() -> { + System.out.println("当前线程:" + Thread.currentThread().getId()); + int result = 1024; + System.out.println("result:" + result); + }, executorService); + System.out.println("main over...."); + } +} diff --git a/service/service-acl/src/test/java/Demo2.java b/service/service-acl/src/test/java/Demo2.java new file mode 100644 index 0000000..418f971 --- /dev/null +++ b/service/service-acl/src/test/java/Demo2.java @@ -0,0 +1,25 @@ +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +public class Demo2 { + /** + * * supplyAsync + * 可以指定返回值 + */ + public static void main(String[] args) throws ExecutionException, InterruptedException { + ExecutorService executorService = Executors.newFixedThreadPool(3); + System.out.println("main begin...."); + CompletableFuture completableFuture = CompletableFuture.supplyAsync(() -> { + System.out.println("当前线程:" + Thread.currentThread().getId()); + int result = 1024; + System.out.println("result:" + result); + return result; + }, executorService); + + // 获取返回结果 + Integer value = completableFuture.get(); + System.out.println("main over...." + value); + } +} diff --git a/service/service-acl/src/test/java/Demo3.java b/service/service-acl/src/test/java/Demo3.java new file mode 100644 index 0000000..79b3696 --- /dev/null +++ b/service/service-acl/src/test/java/Demo3.java @@ -0,0 +1,24 @@ +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +public class Demo3 { + // **whenComplete 和 whenCompleteAsync 的区别:** + // whenComplete:是执行当前任务的线程执行继续执行 whenComplete 的任务。 + // whenCompleteAsync:是执行把 whenCompleteAsync 这个任务继续提交给线程池来进行执行。 + // 方法不以Async结尾,意味着Action使用相同的线程执行,而Async可能会使用其他线程执行(如果是使用相同的线程池,也可能会被同一个线程选中执行) + public static void main(String[] args) { + ExecutorService executorService = Executors.newFixedThreadPool(3); + System.out.println("main begin...."); + CompletableFuture completableFuture = CompletableFuture.supplyAsync(() -> { + System.out.println("当前线程:" + Thread.currentThread().getId()); + int result = 1024; + System.out.println("result:" + result); + return result; + }, executorService).whenComplete((result, exception) -> { + System.out.println("结果:" + result); + System.out.println(exception.getMessage()); + }); + System.out.println("main over...."); + } +} diff --git a/service/service-acl/src/test/java/Demo4.java b/service/service-acl/src/test/java/Demo4.java new file mode 100644 index 0000000..97b1159 --- /dev/null +++ b/service/service-acl/src/test/java/Demo4.java @@ -0,0 +1,29 @@ +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +public class Demo4 { + // 只要上面的任务执行完成,就开始执行thenRun,只是处理完任务后,执行 thenRun的后续操作 + public static void main(String[] args) { + ExecutorService executorService = Executors.newFixedThreadPool(3); + + // 现成的串行执行 + CompletableFuture futureA = CompletableFuture.supplyAsync(() -> { + int value = 1024; + System.out.println("1===>" + value); + return 1024; + }); + + CompletableFuture futureB = futureA.thenApplyAsync((result) -> { + System.out.println("2===>" + result); + return result; + }, executorService); + + CompletableFuture futureC = futureB.thenApplyAsync((result) -> { + System.out.println("3===>" + result); + return result; + }, executorService); + + executorService.shutdown(); + } +} diff --git a/service/service-acl/src/test/java/Demo5.java b/service/service-acl/src/test/java/Demo5.java new file mode 100644 index 0000000..d3fb161 --- /dev/null +++ b/service/service-acl/src/test/java/Demo5.java @@ -0,0 +1,33 @@ +import lombok.extern.slf4j.Slf4j; + +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +@Slf4j +public class Demo5 { + public static void main(String[] args) throws ExecutionException, InterruptedException { + ExecutorService executorService = Executors.newFixedThreadPool(3); + + // 线程一 的异步执行 + CompletableFuture futureA = CompletableFuture.supplyAsync(() -> { + int count = 100; + log.info("线程一:{}", count); + return count; + }, executorService); + + // 线程二 异步执行 + CompletableFuture futureB = CompletableFuture.supplyAsync(() -> { + System.out.println(Thread.currentThread().getName() + "--begin.."); + int res = 30; + System.out.println("二:" + res); + System.out.println(Thread.currentThread().getName() + "--over.."); + return res; + }, executorService); + + CompletableFuture all = CompletableFuture.allOf(futureA, futureB); + all.get(); + System.out.println("over...."); + } +} diff --git a/service/service-product/src/main/resources/application-dev.yml b/service/service-product/src/main/resources/application-dev.yml index a672197..5dd30b0 100644 --- a/service/service-product/src/main/resources/application-dev.yml +++ b/service/service-product/src/main/resources/application-dev.yml @@ -3,8 +3,8 @@ server: bunny: rabbitmq: - # host: 192.168.1.4 - host: 192.168.3.98 + host: 192.168.1.4 + # host: 192.168.3.98 port: 5672 username: bunny password: "02120212" diff --git a/service/service-search/src/main/resources/application-dev.yml b/service/service-search/src/main/resources/application-dev.yml index 415ae18..7fe5120 100644 --- a/service/service-search/src/main/resources/application-dev.yml +++ b/service/service-search/src/main/resources/application-dev.yml @@ -3,15 +3,15 @@ server: bunny: rabbitmq: - # host: 192.168.1.4 - host: 192.168.3.98 + host: 192.168.1.4 + # host: 192.168.3.98 port: 5672 username: bunny password: "02120212" elasticsearch: - #uris: http://192.168.1.4:9200 - uris: http://192.168.3.98:9200 + uris: http://192.168.1.4:9200 + # uris: http://192.168.3.98:9200 nacos: server-addr: z-bunny.cn:8848