并发编程第2章,基础篇
2.1线程安全
1并发编程即是要控制对共享的可变的变量的存取操作顺序
2保证同步的方法,在语法/代码级别来说,可以使用synchronized,volatile,或者是现式的锁,或者使用原子变量
3好的设计是避免线程危险的良方,使用OO的方法尽量避免线程的隐患。
4线程安全的program不一定是由线程安全的classes组成的
5什么是线程安全,如何区分哪些是线程安全的哪些不是?
6无状态的类是线程安全的,本地变量/局部变量在线程栈中存储,所以互不影响。
2.2原子性
1原子操作时线程安全的,对于check-the-act和read-modify-write来说,将这些操作封装成原子操作则能保证线程安全。
2对于check-then-act来说,比如常见的单例模式,有很多就是check-then-act
3对于read-modify-write来说,典型的i++就是。是由三个原子操作组成
2.3锁
如果有多个原子实例变量,那么在程序执行过程中,对于这几个原子变量的操作就变成非原子的操作了,比如
class A{
AA a;
BB b;
method(){
change a,b
.....
}
}
对于这个操作来说,尽管a,b都是原子变量但是由于method的操作,使a,b的状态不能处于原子的变化,在修改a的时候,b有可能被读取。但是b却没有被正确设置,因为b有可能是需要通过a运算得到的值。
对于这种情况,就需要使用锁,将需要划分成原子操作的部分代码进行锁定,成为新的原子操作,这部分代码,只允许一个线程同时访问,其他线程如果需要执行,则均需要等待当前执行线程的解锁。
sysnizatized是可重入锁,是基于每线程的,同一线程获得锁之后,可重复进入
2.4通过锁监视状态
2.5性能
1只将需要同步的代码同步,如果需要在一段代码中划分超过两个以上的同步块,那么需要权衡一下是否需要划分这么多,是否可以将同步块合并,因为获取和释放锁也是需要开销的
2避免对运行速度慢的代码进行同步,比如计算密集型的,或者网络的等
分享到:
相关推荐
这本"Java并发编程学习笔记"可能是作者在深入研究Java并发特性、工具和最佳实践过程中积累的心得体会。下面,我们将根据这个主题,探讨一些关键的Java并发编程知识点。 1. **线程与进程**:在多任务环境中,线程是...
### Java并发编程学习笔记知识点详解 #### 一、Java并发编程概述 Java并发编程是指在Java应用程序中同时执行多个操作的技术。它通过多线程、线程池等机制实现资源的有效利用,提高程序运行效率。Java并发编程的...
"JUC并发编程学习笔记(硅谷)"很可能包含了关于Java并发工具集(Java Util Concurrency, JUC)的深入理解和实战经验。JUC是Java标准库提供的一套强大的并发处理工具,它极大地简化了多线程编程,提高了程序的可读性...
Java并发编程学习笔记,研究JAVA并发多线程编程的一本教程,使用并发技术可以开发出并行算法,充分利用多处理器的计算能力,避免硬件资源浪费。目前,在JAVA并发编程方面的论述系统且内容详实的技术资料不太多,Java...
Java并发编程是Java开发中必不可少的一部分,涉及到多线程、同步机制、线程池以及并发工具类等多个核心知识点。以下是对这些主题的详细说明: 1. **线程安全与锁 Synchronized 底层实现原理**: 线程安全是指在多...
Java并发编程是Java开发中的重要领域,它涉及到多线程、同步、锁机制、线程池等关键概念,是提高程序性能和效率的关键技术。在Java中,并发编程的运用可以充分利用多核处理器的能力,实现高效的多任务处理。以下是对...
Java并发编程学习笔记 本项目整理自《Java7并发编程实战手册》,感兴趣的话推荐阅读原著 本章内容包括: 线程的创建和运行 线程信息的获取和设置 线程的中断 线程中断的控制 线程的Hibernate和恢复 等待线程的终止 ...
### Java并发编程实践笔记知识点详解 #### 一、保证线程安全的方法 1. **不要跨线程访问共享变量:** 当多个线程共享某个变量时,若其中一个线程修改了该变量,其他线程若没有正确同步,则可能读取到错误的数据。...
1.偏向锁 2.轻量级锁 3.锁的优缺点对比
本文将基于文档《Java并发编程与高并发解决方案-学习笔记***.pdf》中提供的内容,来详细阐述并发编程和高并发的基本概念、CPU多级缓存与缓存一致性、以及Java内存模型。 ### 并发与高并发概念 在现代多线程编程中...
Java并发编程中的Synchronized关键字是Java提供的一种内置锁机制,用于解决多线程环境下的线程安全问题。在Java中,线程安全意味着多个线程访问同一份资源时,能够保持数据的一致性和完整性,避免数据冲突。...
标题“多线程与高并发编程笔记、源码等”表明了资源的核心内容,涵盖了多线程和高并发编程的理论与实践。多线程允许一个应用程序同时执行多个任务,而高并发则指系统能够处理大量并发请求的能力。这两个概念在现代...
Java并发编程系列心得笔记,可以参考,欢迎共同交流学习
Java并发编程 背景介绍 并发历史 必要性 进程 资源分配的最小单位 线程 CPU调度的最小单位 线程的优势 (1)如果设计正确,多线程程序可以通过提高处理器资源的利用率来提升系统吞吐率 ...
Java并发编程是编程领域中的重要组成部分,特别是在大型系统和服务器端开发中不可或缺。Java自诞生以来就内置了对多线程的支持,使得开发者能够轻松创建并行运行的任务,提升程序性能。然而,随着并发编程实践的深入...
通过阅读"Go语言学习笔记",你可以建立起对Go语言全面的认知,然后借助"Go并发编程实战"来深化对并发编程的理解,结合实际编写示例程序,将理论知识转化为实践经验。 在学习过程中,建议先从基础语法开始,掌握变量...
Java并发编程中的Synchronized是Java实现线程同步的关键机制,其在JDK1.6之后进行了大量的优化,包括引入了轻量级锁和偏向锁,以提升并发性能。以下是关于这些优化的详细解释: **一、重量级锁** 重量级锁是基于...
Java并发编程与高并发解决方案是开发高性能应用的关键技术。在基础篇中,主要涉及以下几个重要知识点: 1. **并发编程基础** - **并发**:并发是指在一个时间段内,多个线程交替执行,使得系统看起来像是同时处理...