`

线程并发学习四(对象的组合)

阅读更多

1.设计线程安全类的过程中,需要包含以下三个基本要素
   a,找出构成对象状态的所有变量。
   b,找出约束状态变量的不变性条件
   c,建立对象状态的并发访问管理策略
要分析对象的状态,首先从对象的域开始,如果对象中所有的域都是基本类型的变量,那么这些域将构成对象的全部状态。

2.要确保类的线程安全性,就需要确保它的不变性条件不会在并发访问的情况下被破坏,这就需要对其状态进行推断。

3.ServletContext为servlet提供了类似于Map形式的对象容器服务,在ServletContext中可以通过名称来注册或获取应用程序对象,由Servlet容器实现的ServletContext对象必须是线程安全的,因为它肯定会被多个线程同时访问。

4.实例封闭
  如果某对象不是线程安全的,那么可以通过多种技术使其在多线程程序中安全使用。你可以确保该对象只能由单个线程访问(线程封闭),或者通过一个锁来保护对该对象的所有访问。
  封装简化了线程安全类的实现过程,它提供了一种实力封闭机制。当一个对象被封装到另一个对象中时,能够访问被封装对象的所有代码路径都是已知的。

  将数据封装在对象内部,可以将数据的访问限制在对象的方法上,从而更容易确保线程在访问数据时总能持有正确的锁。


5.使用私有的锁对象而不是对象的内置锁(或者其他可通过公有方式访问的锁),有许多优点。私有的锁对象可以将锁封装起来,使客户端代码无法得到锁,但客户端代码可以通过公有方法来访问锁,以便参与到他的同步策略中。

6.线程安全的委托:线程安全类的状态委托给单个线程安全的状态变量。还可以将线程安全性委托给多个状态变量,只要这些变量是彼此独立的,即组合而成的类并不会在其包含的多个状态变量上增加任何不变性的条件。

分享到:
评论

相关推荐

    JAVA并发编程实践-线程对象与组合对象-学习笔记

    使用java.util.concurrent类库构造安全的并发应用程序的基础。共享其实就是某一线程的数据改变对其它线程可见,否则就会出现脏数据。

    JAVA高质量并发详解,多线程并发深入讲解

    ### JAVA高质量并发详解知识点概述 #### 一、Java并发编程基础 - **基础知识:** ...以上章节涵盖了Java并发编程的各个方面,从基础知识到高级应用,从理论讲解到实践案例,为读者提供了一个全面的学习路径。

    多线程的学习资料(对初学者特别有用)!

    本学习资料包将覆盖以上所述的多线程基础、线程池原理、并发工具的使用以及并发问题的诊断和解决。通过深入学习和实践,你可以掌握多线程编程的核心技能,为成为一名出色的开发者打下坚实的基础。在学习过程中,务必...

    java并发(二十四)多线程结果组装

    在"java并发(二十四)多线程结果组装"这个主题中,我们将深入探讨如何在多线程环境中组织和合并不同线程产生的结果。 首先,多线程结果组装涉及到的主要问题是如何协调各个并发执行的任务,确保它们能够正确地将...

    多线程模型PPT课件.pptx

    套间是一种逻辑组合,其中的COM对象共享相同的并发性和重入特性。每个对象都属于某个套间,且套间只能存在于一个进程中。套间与线程的关系体现在: 1. 线程在使用COM对象前必须先进入对应的套间,线程进入套间的...

    《java并发编程实战》读书笔记-第4章-对象的组合

    《java并发编程实战》读书笔记-第3章-对象的共享,脑图形式,使用xmind8制作 包括线程安全类设计、实例封闭、线程安全性委托、现有线程安全类中添加功能和文档化同步策略等内容

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

    对象的组合 设计线程安全的类 实例封闭 线程安全的委托 委托是创建线程安全类的最有效策略,只需要让现有的线程安全类管理所有的状态 在现有线程安全类中添加功能 将同步策略文档化 基础构建...

    JUC多线程学习个人笔记

    Java Util Concurrent(JUC)是Java并发编程的核心库,提供了丰富的工具和接口,使得开发者能够高效、安全地处理多线程环境中的并发问题。以下将详细介绍JUC中的关键概念和特性。 1. **线程池**:JUC通过Executor...

    java线程学习专题资料

    这个Java线程专题学习资料可能包含了上述知识点的详细讲解,尤其是从JavaEye社区收集的经典教程,将帮助开发者深入理解Java线程的使用和优化,提升并发编程能力。通过学习和实践,你可以掌握如何在多线程环境中编写...

    C++语言引入了并发机制,可以很容易的编写并发多线程程序了。

    - **线程对象**:`std::thread`是C++标准库中用于创建和管理线程的基本类型。通过构造函数可以创建一个新的线程,该线程执行指定的函数。 - **线程同步**:C++提供了多种同步原语,例如`std::mutex`用于互斥锁,`std...

    《面向对象多线程》《当析构函数遇到多线程》

    在IT领域,多线程和面向对象编程是两个至关重要的概念,它们对于高效软件开发具有决定性作用。这里我们将深入探讨这两...通过学习这些知识,开发者可以更好地理解和应用多线程技术,写出更加健壮、并发性能优秀的软件。

    9线程和内核对象的同步[参照].pdf

    这些工具的组合使用可以构建复杂、健壮的多线程同步方案。 总之,线程和内核对象的同步是多线程编程中的核心概念,它涉及到线程之间的协作和资源管理。正确使用内核对象和等待函数可以避免数据竞争,防止死锁,确保...

    Java并发编程实战

    第4章 对象的组合 4.1 设计线程安全的类 4.1.1 收集同步需求 4.1.2 依赖状态的操作 4.1.3 状态的所有权 4.2 实例封闭 4.2.1 Java监视器模式 4.2.2 示例:车辆追踪 4.3 线程安全性的委托 4.3.1 示例:基于...

    java并发编程

    你可以通过创建`Thread`对象并传入`Runnable`实例来启动新线程,或者通过实现`Callable`接口并使用`FutureTask`来获取线程执行的结果。 Java并发API的核心组件包括: 1. **ExecutorService**: 这是线程池的接口,...

    Java并发编程实践高清pdf及源码

    1. **线程安全**:线程安全是指在多线程环境下,一个对象或方法可以被正确地访问和修改,不会因并发导致数据不一致。Java提供了多种机制来确保线程安全,如`synchronized`关键字、`volatile`关键字以及`Atomic`类。 ...

    多线程数据同步

    总之,多线程数据同步是并发编程的关键挑战,通过使用临界区对象等同步机制,可以有效地管理共享资源的访问,防止数据不一致性。理解和熟练运用这些同步工具对于编写高效、稳定的多线程程序至关重要。在实际开发中,...

    多线程并行执行,汇总结果

    多线程并行执行是指在同一个程序中同时运行多个线程,每个线程负责不同的任务,以实现任务的并发执行。这种技术可以充分利用多核处理器的优势,将CPU的计算能力最大化,从而提高程序的运行效率。在Java中,可以通过...

Global site tag (gtag.js) - Google Analytics