现在的位置: 首页 > 编程语言 > 正文

Java线程池的应用实例分析

2020年02月13日 编程语言 ⁄ 共 1851字 ⁄ 字号 评论关闭

本文实例讲述了Java线程池的应用。分享给大家供大家参考,具体如下:

一 使用Future与Callable来计算斐波那契数列

1 代码

import java.util.concurrent.*;public class FutureCallableDemo{ static long fibonacci(long n) { if (n == 1 ||n == 2) return 1; else return fibonacci(n - 1) + fibonacci(n - 2); } public static void main( String[] args) throws Exception { Callable<Long> task = () -> fibonacci(30); ExecutorService executor = Executors.newFixedThreadPool(1); Future<Long> future = executor.submit(task); System.out.println("计算第10个斐波那契级数,过会来取...") ; while (future.isDone() == false) { System.out.println("忙别的去吧,结果还在计算中...") ; } System.out.printf("计算完毕,第10个斐波那契级数是:%d %n", future.get()) ; }}

2 运行

计算第10个斐波那契级数,过会来取...忙别的去吧,结果还在计算中...忙别的去吧,结果还在计算中...忙别的去吧,结果还在计算中...忙别的去吧,结果还在计算中...忙别的去吧,结果还在计算中.........忙别的去吧,结果还在计算中...计算完毕,第10个斐波那契级数是:832040

二 线程池模拟工人做工

1 代码

import java.util.concurrent.Executors;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;class Task implements Runnable{ private String name; public Task(String name) { this.name = name; } public String getName() { return name; } @Override public void run() { try { Long duration = (long) (Math.random() * 100); System.out.println("正在做工中,执行者 : " + name); TimeUnit.SECONDS.sleep(duration); } catch (InterruptedException e) { e.printStackTrace(); } }}public class BasicThreadPoolExecutorExample{ public static void main(String[] args) { ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newCachedThreadPool(); for (int i = 0; i <= 5; i++) { Task task = new Task("Task " + i); System.out.println("新任务添加成功 : " + task.getName()); executor.execute(task); } executor.shutdown(); }}

2 运行

新任务添加成功 : Task 0新任务添加成功 : Task 1新任务添加成功 : Task 2新任务添加成功 : Task 3新任务添加成功 : Task 4新任务添加成功 : Task 5正在做工中,执行者 : Task 0正在做工中,执行者 : Task 3正在做工中,执行者 : Task 1正在做工中,执行者 : Task 2正在做工中,执行者 : Task 4正在做工中,执行者 : Task 5Process finished with exit code 0

更多java相关内容感兴趣的读者可查看本站专题:《Java进程与线程操作技巧总结》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

本文标题: Java线程池的应用实例分析

以上就上有关Java线程池的应用实例分析的相关介绍,要了解更多Java,线程池内容请登录学步园。

抱歉!评论已关闭.