`

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

阅读更多

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

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

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

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

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


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

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

分享到:
评论

相关推荐

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

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

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

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

    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并发编程(学习笔记).xmind

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

    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 并发编程实战

    Java并发编程实战,本书从线程的基础知识,包括线程安全性,对象共享以及对象组合灯,到结构化并发编程,都提供了很详细的讲解。

    java 并发编程实践 001

    java 并发编程实践001 002 两个文件全部下载后 用 7z解压 ... 第4章 组合对象 4.1 设计线程安全的类 4.2 实例限制 4.3 委托线程安全 4.4 向已有的线程安全类添加功能 4.5 同步策略的文档化 …… 共16个章节

    Java并发编程实践 PDF 高清版

    第4章 组合对象 4.1 设计线程安全的类 4.2 实例限制 4.3 委托线程安全 4.4 向已有的线程安全类添加功能 4.5 同步策略的文档化 第5章 构建块 5.1 同步容器 5.2 发容器 5.3 阻塞队列和生产者一消费者模式 5.4 阻塞...

    Java并发编程实战2019.zip

    Java并发编程实战,第1章 简介,第2章 线程安全性 第3章 对象的共享 第4章 对象的组合 第5章 基础构建模块 第6章 任务执行 第7章 取消与关闭 第8章 线程池的使用 第9章 图形用户界面应用程序 第10章 避免...

    Java并发编程part2

    第4章 组合对象 4.1 设计线程安全的类 4.2 实例限制 4.3 委托线程安全 4.4 向已有的线程安全类添加功能 4.5 同步策略的文档化 第5章 构建块 5.1 同步容器 5.2 发容器 5.3 阻塞队列和生产者一消费者模式 5.4 阻塞...

    Java并发编程实践part1

    第4章 组合对象 4.1 设计线程安全的类 4.2 实例限制 4.3 委托线程安全 4.4 向已有的线程安全类添加功能 4.5 同步策略的文档化 第5章 构建块 5.1 同步容器 5.2 发容器 5.3 阻塞队列和生产者一消费者模式 5.4 阻塞...

    JAVA并发编程实践_中文版(1-16章全)_1/4

    第4章 组合对象 4.1 设计线程安全的类 4.2 实例限制 4.3 委托线程安全 4.4 向已有的线程安全类添加功能 4.5 同步策略的文档化 第5章 构建块 5.1 同步容器 5.2 发容器 5.3 阻塞队列和生产者一消费者模式 5.4 阻塞...

    Java并发编程实战-读书笔记

    4 对象的组合 5 基础构建模块 6 任务执行 7 取消与关闭 8 线程池的使用 9 图形用户界面应用程序 10 避免活跃性危险 11 性能与可伸缩性 12 并发程序的测试 13 显示锁 14 构建自定义的同步工具 15 原子变量与非阻塞...

    天猫内部资料-Java并发编程

    对象类型: 对象地址原子读写,线程安全 并发读不可变状态,线程安全 并发读写可变状态,非线程线程 基本类型: int,char数值读写,线程安全 long,double高低位,非线程安全 i++等组合操作,非线程安全

    面向对象系统分析与设计课件及复习资料

    面向对象系统分析与设计课件及复习资料 为老师上课用课件和复习指导 内容包括: 1.3 uml概述 1.3.1 uml简史 1.3.2 uml概貌 1.3.3 uml的特点和用途 第2章 面向对象的软件开发过程 2.1 rational统一...

    【资源免费下载】Java代码积累丨大话设计模式(Java实现版本)、线程协作

    演示线程的生命周期 生产者-消费者 设计模式参考《大话设计模式》 工厂简单模式 创造型模式 工厂方法模式 抽象工厂模式 原型模式 建造者模式 单例模式 结构型模式 队列模式 桥接模式 组合模式 装饰模式 外观模式 享...

    (毕业设计)使用SSM框架组合技术开发科研管理系统.zip

    这对于开发需要高并发性能的应用程序(如服务器端应用、网络应用等)非常重要。 自动内存管理(垃圾回收): Java具有自动内存管理机制,通过垃圾回收器自动回收不再使用的对象,使得开发者不需要手动管理内存,...

    Linux多线程服务端编程:使用muduo C++网络库

    第1章线程安全的对象生命期管理3 1.1当析构函数遇到多线程. . . . . . . . . . . . . . . . .. . . . . . . . . . . 3 1.1.1线程安全的定义. . . . . . . . . . . . . . . . .. . . . . . . . . . . 4 1.1.2Mutex...

Global site tag (gtag.js) - Google Analytics