From 11ac398bed06f2b271122ea5442883939d3c2f3f Mon Sep 17 00:00:00 2001 From: xuxin <840198532@qq.com> Date: Tue, 10 Mar 2026 11:27:23 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9B=E9=98=B6day06-=E7=BA=BF=E7=A8=8B?= =?UTF-8?q?=E6=B1=A0=EF=BC=9A=E5=A4=84=E7=90=86Callable=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/inmind/thread_pool10/Demo13.java | 28 +++++++++++++++++++ .../com/inmind/thread_pool10/MyCallable.java | 25 +++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 javaSE-day06/src/com/inmind/thread_pool10/Demo13.java create mode 100644 javaSE-day06/src/com/inmind/thread_pool10/MyCallable.java diff --git a/javaSE-day06/src/com/inmind/thread_pool10/Demo13.java b/javaSE-day06/src/com/inmind/thread_pool10/Demo13.java new file mode 100644 index 0000000..490d267 --- /dev/null +++ b/javaSE-day06/src/com/inmind/thread_pool10/Demo13.java @@ -0,0 +1,28 @@ +package com.inmind.thread_pool10; + +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + +/* +学习任务:线程池:处理Callable任务 + +提交Callable任务的API: + Future submit(Callable task) 提交值返回任务以执行,并返回代表任务待处理结果的Future。 + +注意:有返回的子线程操作,它的返回值会封装在Future中,通过get方法来获取 + */ +public class Demo13 { + public static void main(String[] args) throws ExecutionException, InterruptedException { + //创建线程池 + ExecutorService threadPool = Executors.newFixedThreadPool(5); + Future future1 = threadPool.submit(new MyCallable(5)); + Future future2 = threadPool.submit(new MyCallable(3)); + Future future3 = threadPool.submit(new MyCallable(10)); + + System.out.println("任务1返回的结果为:"+future1.get()); + System.out.println("任务2返回的结果为:"+future2.get()); + System.out.println("任务3返回的结果为:"+future3.get()); + } +} diff --git a/javaSE-day06/src/com/inmind/thread_pool10/MyCallable.java b/javaSE-day06/src/com/inmind/thread_pool10/MyCallable.java new file mode 100644 index 0000000..8910822 --- /dev/null +++ b/javaSE-day06/src/com/inmind/thread_pool10/MyCallable.java @@ -0,0 +1,25 @@ +package com.inmind.thread_pool10; + +import java.util.concurrent.Callable; + +public class MyCallable implements Callable { + int sum = 0; + + public MyCallable(int sum) { + this.sum = sum; + } + + //计算固定值的累和 + @Override + public Integer call() throws Exception { + //计算sum的累和 + int result = 0; + for (int i = 0; i <= sum; i++) { + result+= i; + } + Thread.sleep(1000); + System.out.println(Thread.currentThread().getName()+"执行完累加操作,结果为:"+result); + + return result; + } +}