`

Java并发编程-线程安全与基础构建模块

阅读更多
设计线程安全的类
1、实例封闭,将数据封装在对象内部,可以将数据的访问控制限制在对象的方法上,从而更容易确保线程在访问数据时总能持有正确的锁。
    Java 中 Collections 类 为ArrayList,HashMap 提供了线程安全的实现。
主要是通过装饰器模式将容器封装在一个同步的包装器对象中,而包装器将接口中的每个方法都实现为同步方法,并将调用请求发布到底层的容器对象上。
2、java监视器模式,将对象所有可变状态都封装起来,并有对象自己的内置锁来保护

3、线程安全性的委托
4、客户端加锁 对于使用某个对象X的客户端代码,使用X本身用于保护其状态的锁来保护这段客户端代码。
5、组合
基础构建模块
1、同步容器类
实现线程安全的方式:将他们的状态封装起来,并对每个公有的方法进行同步,使得每次只有一个线程能访问容器的状态。
2、并发容器
Queue 操作不会阻塞,如果队列为空,则获取元素的操作将返回空值。
BlockingQueue 扩展了Queue ,实现了 生产者-消费者 模式

ConcurrentHashMap 提供了分段锁的实现机制。

3、FutureTask ,表示的计算式通过callable实现的。
Future.get()的行为取决于任务的状态(等待运行,正在运行,运行完成)。如果任务已经完成,那么get会立即返回结果。
否则,get将阻塞知道任务进入完成状态,然后返回结果或者抛出异常。
FutureTask将计算结果从执行计算的线程传递给获取计算结果的线程。
   Callable表示的任务可以抛出一个受检查或者未受检查的异常,并且任何代码都可以抛出一个Error。无论任何代码都可以抛出什么异常,都会封装到一个

ExecututionException中,并在Future.get中重新抛出。

4、信号量:计数信号量用来控制同时访问某个特定资源的操作数量或者同时执行某个指定操作的数量。Semaphore

附件为FutureTask 实例,测试使用,例子有写拙劣
分享到:
评论

相关推荐

    Java并发编程实践-03章-使用JDK并发包构建程序1

    `java.util.concurrent`包是Java标准库中专门用于并发编程的模块,它包含了各种线程安全的数据结构、同步机制和执行模型。这个包的引入极大地简化了并发编程的复杂性,提供了一套高效且易用的并发工具。 **3.2 ...

    Java 并发编程实战

    第5章 基础构建模块 5.1 同步容器类 5.1.1 同步容器类的问题 5.1.2 迭代器与Concurrent-ModificationException 5.1.3 隐藏迭代器 5.2 并发容器 5.2.1 ConcurrentHashMap 5.2.2 额外的原子Map操作 5.2.3 ...

    Java编程1-20例 Java编程1-20例

    20. **并发库(Java Concurrency API)**:从Java 5开始,提供了丰富的并发工具类,如ExecutorService、Semaphore、CountDownLatch等,帮助开发者编写高效、线程安全的并发程序。 以上知识点覆盖了Java编程的基本到...

    Java并发编程(学习笔记).xmind

    Java并发编程 背景介绍 并发历史 必要性 进程 资源分配的最小单位 线程 CPU调度的最小单位 线程的优势 (1)如果设计正确,多线程程序可以通过提高处理器资源的利用率来提升系统吞吐率 ...

    java实战编程--学生成绩管理系统

    7. **多线程**:如果系统需要同时处理多个任务,如并发查询,Java的多线程技术将派上用场,可以提高程序的效率和响应速度。 8. **设计模式**:系统设计可能应用到多种设计模式,如单例模式用于数据库连接管理,工厂...

    java编程案例--10道精选的JAVA小题

    6. **类与对象**:面向对象编程是Java的核心,掌握类的定义、对象的创建和使用,以及封装、继承和多态的概念,将有助于我们构建复杂的软件系统。 7. **异常处理**:Java的异常处理机制使得程序在遇到错误时能够优雅...

    Java核心技术-卷1(基础知识-原书第10版)

    15. **模块系统**:讲解Java 9引入的模块系统,包括模块的概念、模块描述符、模块间的依赖关系以及如何构建模块化项目。 通过阅读《Java核心技术-卷1(基础知识-原书第10版)》,读者可以系统地学习到Java编程的基础...

    Java多线程

    Java多线程知识点梳理: ...对于有一定Java基础但缺乏多线程和并发编程经验的开发者来说,本教程提供了快速上手的指导。学习完本教程之后,开发者将能编写简单的线程程序,并能够理解和应用线程间的通信和同步机制。

    java多线程核心编程技术

    通过理解线程的基本概念、掌握线程的创建与控制、熟悉线程间的同步与通信以及合理利用并发工具类和线程池,开发者可以更好地构建稳定高效的多线程应用程序。希望本文能帮助你更好地理解和运用Java多线程技术。

    多线程精品资源--多线程与高并发.zip

    本文将深入探讨这两个主题,并结合资源包"多线程精品资源--多线程与高并发.zip"中的内容,提供相关知识点的详细说明。 首先,多线程是指在一个进程中同时执行多个线程,这使得程序可以并行处理任务,提高CPU资源的...

    java学习资料-免费-适合0基础&进阶学习

    - **多线程**:了解并发编程,包括线程的创建、同步机制(如synchronized关键字、Lock接口)和线程池的使用。 - **网络编程**:学习Socket编程,实现客户端和服务器之间的通信。 - **JVM原理**:探索Java虚拟机的...

    《Java编程基础》-曹静-源代码-5589

    《Java编程基础》是针对初学者的一门课程,由曹静老师编著,旨在系统地介绍Java编程语言的基础知识和编程技巧。课程涵盖了Java语法的基本规范,深入浅出地讲解了编程方法,使得学习者能够逐步掌握编程思维,为后续的...

    Java开发典型模块大全(仅含程序源码)-20个Java项目

    1. **基础模块**:这些项目通常涉及Java基础语法、面向对象编程(OOP)概念,如类、对象、封装、继承和多态。学习者可以在此基础上巩固Java的基础知识。 2. **数据结构与算法**:可能包含链表、栈、队列、树、图等...

    《精通JAVA----JDK》

    1. **Java语言基础**:Java是一种面向对象的编程语言,以其跨平台、安全性高和健壮性而闻名。初学者需要理解基本语法,包括数据类型、变量、控制结构(如if-else、switch、for、while)、类、对象和接口。 2. **JDK...

    多线程和网络编程

    在IT领域,多线程和网络编程是两个关键的概念,它们在构建高性能、高并发的系统中发挥着至关重要的作用。 多线程是指在一个进程中同时执行多个线程,每个线程独立地执行任务,共享同一内存空间。这种设计模式允许...

Global site tag (gtag.js) - Google Analytics