《Java Concurrency in Practice》之线程安全性
来源:互联网 发布:tinycore linux gcc 编辑:程序博客网 时间:2024/06/09 16:24
或许令人感到奇怪的是,并发编程并不像大家所想的那样,需要使用大量的线程或者锁,至多不会超过土木工程中铆钉和工字梁的数量。当然,要建造一座坚固的桥梁,需要正确地使用大量的铆钉和工字梁。同理,构建稳健的并发程序时,也需要正确地使用线程和锁。但是,这些终归只是一些机制。编写线程安全的代码,其核心在于管理访问状态,特别是对共享的和可变的这两种状态的访问。
从非正式的意义来讲,对象的状态是指存储在状态变量中的数据,例如实例或静态变量。
如果多个线程同时访问同一个可变的状态变量,而没有合适的同步,那么你的程序将出错。此时,有三种方法可以修复:(1)、跨线程间不要共享状态变量;(2)、使状态变量不可变;(3)、访问状态变量时使用同步。
在设计线程安全的类时,良好的面向对象技术——封装性,不可修改性,不变量的清晰规范,都能起到很好的帮助作用(are your best friends)。当然,该理论不适用于所有情况。一种合理的编程方法是:首先使代码正确运行,然后再提高代码的速度。
正确的理解“线程安全的类”和“线程安全的程序”这两个概念,是决定对线程安全认知程度的关键。值得注意的是,线程安全的程序并非完全由线程安全类构成。由线程安全类构成的程序,并不一定就是线程安全的;线程安全的类,也可以是非线程安全的类。
线程安全性,是指:当多个线程访问某个类时,不管运行时环境采用何种调度方式,或者这些线程将如何交替执行,并且在主要调度代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为。
常识,无状态的对象一定是线程安全的。
- 《Java Concurrency in Practice》之线程安全性
- Java Concurrency in Practice ---线程安全性
- [Java Concurrency in Practice]第二章 线程安全性
- 《Java Concurrency in Practice》之线程封闭(Thread Confinement)
- Java并发编程学习——《Java Concurrency in Practice》学习笔记 2.线程安全性
- Java Concurrency in Practice
- Java Concurrency in Practice
- Java Concurrency In Practice
- 《Java Concurrency in Practice》之Volatile variables
- 《Java Concurrency in Practice》 学习笔记--第二章:线程安全
- [Java Concurrency in Practice]第八章 线程池的使用
- Java Concurrency in Practice :基础知识(线程同步)
- Java Concurrency In Practice Notes
- Java Concurrency in Practice 笔记
- java concurrency in practice - 1
- java concurrency in practice - 2
- Understand <Java Concurrency in Practice>
- Java Concurrency in Practice读书笔记
- JavaScript 作用域和闭包
- FMDB问题
- ORA-01157: cannot identify/lock data file 6 - see DBWR trace file
- Connecting to LDAP server using JNDI in Java
- Plus One -- LeetCode
- 《Java Concurrency in Practice》之线程安全性
- Java关键字final、static使用总结
- Java关键字this、super使用总结
- System.Func<>与System.Action<>
- 语义网(Semantic Web)小记
- Android4.4建工程时多生成appcompat_v7问题解决
- Convert Sorted Array to Binary Search Tree
- Base64详解及其使用方法
- HM-xCompressCU函数