`
羽鹤彬
  • 浏览: 49354 次
社区版块
存档分类
最新评论

java并发(二)对象的共享-线程封闭

 
阅读更多
    当访问共享的可变数据的时候,通常需要使用同步。一种避免使用同步的方式就是不共享数据。如果仅在单线程内访问数据,就不需要同步。这种技术被称为线程封闭,他是实现线程安全的最简单的方式之一。当某个对象封闭在一个线程中时,这种用法将自动实现线程安全性,即使被封装的对象本身不是线程安全的。
    线程封闭技术的一种常见的应用是JDBC的Connection对象。JDBC规范并不要求Connection对象必须是线程安全的。在典型的服务器应用程序中,线程从连接池中获得一个Connection对象,并且用该对象来处理请求,使用完后再将对象返还给连接池。
    维持线程封闭性的一种更规范的方法是使用ThreadLocal,这个类能使线程中的某个值与保存值的对象关联起来。
分享到:
评论

相关推荐

    一本经典的多线程书籍 Java并发编程 设计原则与模式 第二版 (英文原版)

    《Java并发编程 设计原则与模式 第二版》是一本广受赞誉的经典书籍,由著名计算机科学家Doug Lea撰写,英文原版名为"Concurrent Programming in Java - Design Principles and Patterns, Second Edition"。...

    Java并发编程学习笔记

    - 线程封闭(Thread Confinement):一种确保线程安全的策略,通常通过ThreadLocal等机制实现。 - 不可变对象(Immutable Objects):一旦创建就不能被修改的对象,天然线程安全。 学习Java并发编程,重点在于理解...

    《java并发编程实战》读书笔记-第3章-对象的共享

    《java并发编程实战》读书笔记-第3章-对象的共享,脑图形式,使用xmind8制作 包括可见性、发布与逸出、线程封闭、不可变性、安全发布等内容

    Java并发编程实战

    3.3.1 Ad-hoc线程封闭 3.3.2 栈封闭 3.3.3 ThreadLocal类 3.4 不变性 3.4.1 Final域 3.4.2 示例:使用Volatile类型来发布不可变对象 3.5 安全发布 3.5.1 不正确的发布:正确的对象被破坏 3.5.2 不可变对象与...

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

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

    Java 并发编程实战

    3.3.1 Ad-hoc线程封闭 3.3.2 栈封闭 3.3.3 ThreadLocal类 3.4 不变性 3.4.1 Final域 3.4.2 示例:使用Volatile类型来发布不可变对象 3.5 安全发布 3.5.1 不正确的发布:正确的对象被破坏 3.5.2 不可变对象与...

    Java并发编程实践

    Java并发编程涉及了多个核心概念和技术,包括进程、线程的基础知识,创建多线程的方法,线程的基本控制手段,以及并发编程的实践技巧。通过深入理解这些内容,开发者可以更好地设计和实现高效的并发应用程序。

    java并发编程实践笔记

    15. **使用ThreadLocal确保线程封闭性:** 通过`ThreadLocal`可以在每个线程中存储独立的副本,从而避免线程间的数据竞争。 16. **单一不可变对象的优势:** 不可变对象在多线程环境中是线程安全的,应尽可能使用不...

    java并发编程实践笔记资料.pdf

    16. 使用ThreadLocal变量可以确保线程封闭性,例如hibernate openSessionInView机制和jdbc的connection机制。 17. 单一不可变对象往往是线程安全的,但是复杂不可变对象需要保证其内部成员变量也是不可变的。 18. ...

    Java并发编程实践 PDF 高清版

    3.3 线程封闭 3.4 不可变性 3.5 安全发布 . 第4章 组合对象 4.1 设计线程安全的类 4.2 实例限制 4.3 委托线程安全 4.4 向已有的线程安全类添加功能 4.5 同步策略的文档化 第5章 构建块 5.1 同步容器 5.2 发容器 5.3 ...

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

    线程封闭:线程封闭的对象只能由一个线程拥有并修改 Ad-hoc线程封闭 栈封闭 ThreadLocal类 只读共享:不变对象一定是线程安全的 尽量将域声明为final类型,除非它们必须是可变的 分类 ...

    Java并发学习.ppt

    - **线程封闭**:如Swing的事件分发线程,限制对象在特定线程中使用,保证线程安全。 - **栈限制**:局部变量由于存储在栈中,通常不会被多线程共享。 - **ThreadLocal**:每个线程有自己的副本,避免线程间的...

    Java并发进程开发手册

    #### 二、Java并发编程的核心概念 1. **内存模型(Memory Model)** - Java内存模型定义了程序中各个变量的访问规则以及线程之间的数据同步机制。 - 了解Java内存模型对于正确地实现线程间的通信至关重要。 2. **...

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

    3.3 线程封闭 3.4 不可变性 3.5 安全发布 . 第4章 组合对象 4.1 设计线程安全的类 4.2 实例限制 4.3 委托线程安全 4.4 向已有的线程安全类添加功能 4.5 同步策略的文档化 第5章 构建块 5.1 同步容器 5.2 发容器 5.3 ...

    java 并发编程实践 001

    java 并发编程实践001 ...3.3 线程封闭 3.4 不可变性 3.5 安全发布 . 第4章 组合对象 4.1 设计线程安全的类 4.2 实例限制 4.3 委托线程安全 4.4 向已有的线程安全类添加功能 4.5 同步策略的文档化 …… 共16个章节

    Java 多线程与并发(8-26)-JUC原子类- CAS, Unsafe和原子类详解.pdf

    Java多线程与并发处理是Java编程中的高级话题,涉及到JUC(java.util.concurrent)包中的原子类、CAS(Compare-And-Swap)机制、Unsafe类以及多线程并发的无锁方案和线程安全的实现方法。 CAS是一种无锁的同步机制...

Global site tag (gtag.js) - Google Analytics