0

0

Java框架并发编程中有哪些常用设计模式?

PHPz

PHPz

发布时间:2024-07-12 10:18:01

|

1100人浏览过

|

来源于php中文网

原创

并发编程中常用的设计模式有:executor:管理线程池并提交任务,简化线程管理。future:表示异步执行的任务,允许在任务完成前访问结果或取消任务。completablefuture:增强了 future,提供了更复杂的异步流程构建功能。semaphore:限制同时访问特定资源的线程数量,防止资源超载。threadlocal:为每个线程提供私有数据存储,避免线程安全问题。

Java框架并发编程中有哪些常用设计模式?

Java 框架并发编程中的常用设计模式

并发编程在 Java 框架中至关重要,需要有效地协调并行任务。以下是一些最常用的设计模式,可用于简化和有效实现并发代码:

Executor

立即学习Java免费学习笔记(深入)”;

  • 用途:管理线程池并提交任务。
  • 好处:抽象了线程管理,提供了动态扩展和优化性能的方法。
  • 示例:
ExecutorService executor = Executors.newFixedThreadPool(10);
executor.submit(() -> System.out.println("Task completed"));

Future

UQ云商B2B2C系统
UQ云商B2B2C系统

UQCMS云商是一款B2B2C电子商务软件 ,非常适合初创的创业者,个人及中小型企业。程序采用PHP+MYSQL,模板采用smarty模板,二次开发,简单方便,无需学习其他框架就可以自行模板设计。永久免费使用,操作简单,安全稳定。支持PC+WAP+微信三种浏览方式,支持微信公众号。

下载
  • 用途:表示异步执行的任务。
  • 好处:允许在任务完成之前访问结果或取消任务。
  • 示例:
Future future = executor.submit(() -> "Task result");
String result = future.get();

CompletableFuture

  • 用途:增强了 Future,提供了更多的并发功能,例如组合和转换任务。
  • 好处:允许轻松构建复杂的异步流程。
  • 示例:
CompletableFuture future = new CompletableFuture<>();
executor.submit(() -> {
    String result = "Task result";
    future.complete(result);
});

Semaphore

  • 用途:限制同时访问特定资源的线程数量。
  • 好处:防止资源超载并确保公平访问。
  • 示例:
Semaphore semaphore = new Semaphore(10); // 允许 10 个线程同时访问
semaphore.acquire(); // 获得许可证
try {
    // 访问资源
} finally {
    semaphore.release(); // 释放许可证
}

ThreadLocal

  • 用途:为每个线程提供其自己的私有数据存储。
  • 好处:避免线程安全问题,轻松访问线程特定数据。
  • 示例:
ThreadLocal threadLocal = new ThreadLocal<>();
threadLocal.set("Thread-specific data");
String data = threadLocal.get();

实战案例:并发文件读取

以下是一个使用 Executor 和 Future 模式读取文件的并发案例:

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.concurrent.*;

public class FileLinesReader {

    private static final int NUM_THREADS = 10;

    public static void main(String[] args) throws IOException, InterruptedException {
        Path path = Paths.get("input.txt");
        ExecutorService executor = Executors.newFixedThreadPool(NUM_THREADS);

        List>> futures = submitFileLinesProcessing(executor, path);
        List lines = collectFileLines(futures);

        for (String line : lines) {
            System.out.println(line);
        }
    }

    private static List>> submitFileLinesProcessing(
            ExecutorService executor, Path path) throws IOException {
        List>> futures = new ArrayList<>();

        for (int i = 0; i < NUM_THREADS; i++) {
            futures.add(executor.submit(() -> Files.readAllLines(path)));
        }

        return futures;
    }

    private static List collectFileLines(
            List>> futures) throws InterruptedException, ExecutionException {
        List lines = new ArrayList<>();

        for (Future> future : futures) {
            lines.addAll(future.get());
        }

        return lines;
    }
}

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

525

2023.08.10

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

30

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

7

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

21

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

2

2026.01.31

漫画防走失登陆入口大全
漫画防走失登陆入口大全

2026最新漫画防走失登录入口合集,汇总多个稳定可用网址,助你畅享高清无广告漫画阅读体验。阅读专题下面的文章了解更多详细内容。

8

2026.01.31

php多线程怎么实现
php多线程怎么实现

PHP本身不支持原生多线程,但可通过扩展如pthreads、Swoole或结合多进程、协程等方式实现并发处理。阅读专题下面的文章了解更多详细内容。

1

2026.01.31

php如何运行环境
php如何运行环境

本合集详细介绍PHP运行环境的搭建与配置方法,涵盖Windows、Linux及Mac系统下的安装步骤、常见问题及解决方案。阅读专题下面的文章了解更多详细内容。

0

2026.01.31

php环境变量如何设置
php环境变量如何设置

本合集详细讲解PHP环境变量的设置方法,涵盖Windows、Linux及常见服务器环境配置技巧,助你快速掌握环境变量的正确配置。阅读专题下面的文章了解更多详细内容。

0

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 5万人学习

Git 教程
Git 教程

共21课时 | 3.2万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号