在Java并发编程实践(Java concurrency in practice) 一书中第二章讲到了线程安全的概念.
有些话非常的经典.我同时找来英文放在这里.
引用
编写线程安全的代码,本质上就是管理状态(state)的访问,而且通过都是共享的,可变状态.
通俗地说,一个对象的状态就是它的数据,存储在状态变量(state variables)中,比如实例域或静域.对象的状态还包括了其他附属对象的域.
======================================================
Writting thread-safe code is ,at its core,about managing access to state,and in particular to shared,mutable state.
Informally ,an object's state is its data,stored in stave variables such as instance or static fields.An object's state may include fields from other,dependent object;
引用
所谓共享,是指一个变量可以被多个线程访问:所谓可变,是指变量的值在其生命周期内可以改变.我们讨论的线程安全性好像是关于代码的.但是我们真正要做的,是在不可控制的并发访问中保护数据.
===================================================================
By shared, we mean that a variable could be accessed by multiple threads; by mutable, we mean that its value could change during its lifetime.We may talk about thread safety as if it were about code,but what we are really trying to do i protect data from uncontrolled concurrent access.
引用
无论何时,只要有多于一个的线程访问给定的状态变量,而且其中某个线程会写入该变量,此时必须使用同步来协调线程对该变量的访问.
在Java中首要的同步机制是synchronized 关键字,它提供了独占锁.除此之外,术语"同步"还包括volatitle变量,显示锁和原子变量的使用.
============================================================
Whenever more than one thread access a given state variable,and one of them might write to it,they all must coordinate their access to it using synchronized.The primary mechanism for synchronized in java is the synchronized keyword,which provides exclusive locking,but the term "synchronization" also includes the use of volatitle variables,explicit locks,and atomatic variables.
/***
在没有正确同步的情况下,如果多个线程访问了同一个变量,你的程序就存在隐患.有3种方法修复它:
1.不要跨线程共享变量;
2.使状态变量为不可变的;或者
3.在任何访问状态变量的时候使用同步.
==================================================================================
If multiple threads access the same mutable state varialbe without appropriate synchronization,your program is broken,There are three ways to fix it:
1. Don't share the state variable across threads;
2. Make the state variable immutable;or
3. Use synchronized whenever accessing the state variable.
***/
引用
一开始就将一个类设计成是线程安全的,比在后期重新修复它更容易.
====================================================================
It is easier to design a class to the thread-safe than to retrofit it for thread safety later.
引用
设计线程安全的类时,优秀的面向对象技术---封装,不可变性以及明确的不变约束,会给你提供诸帮助.
========================================================================
When designing thread-safe classes,good object-oriented techniques-encapsulation,immutability,and clear specification of invariants-are your best friends.
引用
有时,抽象封装会与性能产生冲突,虽然不像很多开发者认为的那样频繁,但是首先让你的代码正确,然后(then)再让它跑得快,总是一个良好的实践.
===========================================================
Sometimes abstraction and encapsulation are at odds with performance-although not nearly as often as many developers believe-but it is always as good practice first to make your code right,and then make it fast.
待续---
分享到:
相关推荐
《Java并发编程实践》是一本深入探讨Java多线程编程的经典著作,由Brian Goetz、Tim Peierls、Joshua Bloch、Joseph Bowles和David Holmes等专家共同编写。这本书全面介绍了Java平台上的并发编程技术,是Java开发...
《JAVA并发编程实践》这本书是Java开发者深入理解并发编程的重要参考资料。它涵盖了Java并发的核心概念、工具和最佳实践,旨在帮助读者在多线程环境下编写高效、安全的代码。 并发编程是现代软件开发中的关键技能,...
《Java并发编程的艺术》这本书是Java开发者深入理解并发编程的重要参考书籍。这本书全面地介绍了Java平台上的并发和多线程编程技术,旨在帮助开发者解决在实际工作中遇到的并发问题,提高程序的性能和可伸缩性。 ...
《JAVA并发编程实践》既能够成为读者的理论支持,又可以作为...《JAVA并发编程实践》适合于具有一定Java编程经验的程序员、希望了解Java SE 5以及6在线程技术上的改进和新特性的程序员,以及Java和并发编程的爱好者。
Java并发编程实践是Java开发中不可或缺的一个领域,它涉及到如何高效、正确地处理多线程环境中的任务。这本书的读书笔记涵盖了多个关键知识点,旨在帮助读者深入理解Java并发编程的核心概念。 1. **线程和进程的...
根据给定文件的信息“JAVA并发编程实践”以及其描述为“Java并发学习资料”,我们可以从中提炼出关于Java并发编程的一些核心知识点。Java并发编程是Java高级特性之一,它允许开发者编写能够同时执行多个任务的程序,...
Java线程与并发编程实践是Java开发者必备的技能之一,特别是在多核处理器和高并发应用环境中,有效地管理和利用线程能极大地提升程序的性能。本书《java线程与并发实践编程》由Jeff Friesen撰写,2017年2月出版,...
根据提供的信息,“JAVA并发编程实践.pdf”这一文档主要聚焦于Java并发编程的实践与应用,这对于希望深入了解并行处理和多线程技术的开发者来说是非常有价值的资源。下面将基于标题和描述中的关键词“JAVA并发编程...
《Java并发编程实践》这本书深入探讨了Java平台上的并发编程技术,涵盖了从基础概念到高级策略的广泛主题。在Java编程中,并发处理是优化性能、提高系统资源利用率的关键手段,尤其是在多核处理器和分布式系统中更为...
通过深入学习"Java并发编程与实践"文档,开发者能够提升自己在高并发环境下的编程能力,设计出更加健壮和高效的Java应用程序。这份资料对于理解Java并发原理、优化并发代码和解决并发问题具有极大的价值。
### Java并发编程实践知识点详解 #### 一、Java并发编程基础 ##### 1.1 并发与并行概念区分 在Java并发编程实践中,首先需要理解“并发”与“并行”的区别。“并发”指的是多个任务同时进行,但实际上可能是在多...
《Java并发编程实践》是一本由Brian Goetz等人编写的关于Java并发编程的经典著作。本书深入浅出地介绍了Java 5.0及之后版本中新增加的并发特性,并对并发编程进行了全面而详尽的讲解。自发布以来,这本书因其内容的...
《Java并发编程实战》是Java并发编程领域的一本经典著作,它深入浅出地介绍了如何在Java平台上进行高效的多线程编程。这本书的源码提供了丰富的示例,可以帮助读者更好地理解书中的理论知识并将其应用到实际项目中。...
《JAVA并发编程实践》这本书是Java开发者深入理解并发编程的重要参考资料。并发编程是现代软件开发中的核心主题,尤其是在多核处理器普及的今天,利用好并发能够显著提升程序的执行效率和系统性能。这本书以实践为...
《Java并发编程实践》这本书是Java开发者深入了解并发编程的重要参考资料,尤其对于想要提升在多线程环境下编程技能的程序员来说,它提供了丰富的实践经验和深入的理论解析。在Java的世界里,多线程是构建高性能、高...