`
youyu4
  • 浏览: 435308 次
社区版块
存档分类
最新评论

Java多线程之Volatile详解

 
阅读更多

Java多线程之Volatile详解

 

Volatile不加锁,单每次读取从主内存读,,每次写要写回到主内存;相当于轻量级的Synchronized,编码少,开销少,但是没有原子性,性能比Synchronized好。

 

 

 

Volatile具有的特性

  • 可见性
  • 顺序性
  • 没有原子性

 

 

正确使用Volatile

 

  • 对变量的写操作不依赖当前值;不能做线程安全计数器,i++,其实步骤是:读取 - 修改 - 写入,对于不支持原子性的Volatile是不安全的
  • 该变量没有包含在具有其他变量的不变式中

 

 

Volatile性能开销

 

  • 读操作开销非常低,几乎和非Volatile读操作一样
  • 写操作开销比非Volatile写操作多很多
  • Volatile总开销俾Synchronized低

注意:在Volatile安全使用的情况下,Volatile的可伸缩性强,如读操作远超过写操作,对比锁,可降低性能开销

 

 

 

Volatile适用场景

 

  • 不能做线程计数器
  • 状态标志
  • 一次性安全发布
  • 独立观察
  • Volatile bean模式
  • 开销低的读写策略

 

 

volatile不能保证原子性而Atomic可以,例如:AtomicLong

 

 

 

分享到:
评论

相关推荐

    java多线程设计模式详解(PDF及源码).zip

    Java多线程设计模式是...通过阅读“java多线程设计模式详解(PDF及源码)”的资料,我们可以深入了解这些知识点,并通过提供的源码加深理解,学习如何在实际项目中应用多线程设计模式,提高程序的并发性能和可维护性。

    Java多线程详解及示例

    Java多线程编程是提升程序性能和响应性的关键技术。理解多线程的概念,掌握线程的创建、同步、通信、死锁避免等核心知识点,以及合理使用线程池,对于编写高效、稳定的并发程序至关重要。通过实践,开发者可以更好地...

    Java线程:volatile关键字

    Java 线程 volatile 关键字详解 Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。volatile 变量的同步性较差,但它有时更简单并且开销更低。volatile 变量可以被看作是一种 “程度较轻的 ...

    java多线程设计模式详解

    本文将深入探讨《java多线程设计模式详解》中所涵盖的关键知识点,旨在帮助开发者掌握多线程设计的最佳实践。 首先,我们要理解Java多线程的基础概念。线程是操作系统分配CPU资源的基本单位,一个进程可以包含多个...

    java多线程设计模式详解(PDF及源码)

    《Java多线程设计模式详解》是一本深入探讨Java并发编程和设计模式的专业书籍,它涵盖了多线程环境下的各种核心概念、最佳实践以及常见问题的解决方案。这本书旨在帮助开发者在实际开发过程中更好地理解和应用多线程...

    Java多线程详解(超详细)_狂神说笔记完整版_项目代码_适合小白随课程学习

    Java多线程详解 在Java编程中,多线程是一种重要的技术,它使得程序能够同时执行多个任务,提高系统的效率和响应性。本教程将详细讲解Java中的多线程概念,包括线程的创建、状态、同步以及高级主题,旨在帮助初学者...

    java多线程设计模式详解.rar

    本压缩包文件“java多线程设计模式详解.rar”显然提供了深入探讨这一主题的详细资料。 一、线程基础 在Java中,线程是程序中的执行流,每个线程都有自己的程序计数器、虚拟机栈、本地方法栈和堆。主线程启动后,...

    Java多线程 volatile关键字详解

    Java多线程volatile关键字详解 Java多线程volatile关键字详解主要介绍了Java多线程volatile关键字的应用和原理。volatile是一种轻量同步机制,可以确保变量的可见性和顺序性,但不保证原子性。 volatile关键字的...

    java 多线程编程实战指南(核心 + 设计模式 完整版)

    《Java多线程编程实战指南》这本书深入浅出地讲解了Java多线程的核心概念和实战技巧,分为核心篇和设计模式篇,旨在帮助开发者掌握并应用多线程技术。 1. **线程基础** - **线程的创建**:Java提供了两种创建线程...

    java多线程详解

    ### Java多线程详解:深度探索Java线程机制 #### 知识点一:线程与进程的区别 在深入探讨Java多线程之前,我们首先需要理解线程与进程的基本概念及其区别。进程是资源分配的基本单位,拥有独立的内存空间,而线程...

    violate java-Java 之 volatile 超级详解

    总之,`volatile`关键字在Java多线程编程中起着关键作用,它保证了数据的可见性和一定的有序性,但不适用于所有并发场景。理解和正确使用`volatile`,可以帮助我们编写出更加高效和可靠的多线程程序。

    java+多线程+同步详解源码整理

    Java多线程允许程序同时执行多个独立的线程,从而提高计算机系统的资源利用率和程序的响应速度。Java提供了两种创建线程的方式:通过实现`Runnable`接口或继承`Thread`类。实现`Runnable`接口更为灵活,因为Java不...

    java多线程设计模式详解PDF及源码

    本资源包括了详细的“Java多线程设计模式详解”PDF文档以及配套的源码,帮助开发者深入理解和应用这些模式。 首先,我们要了解Java中创建线程的几种方式:继承Thread类、实现Runnable接口以及使用ExecutorService和...

    java+多线程+同步详解源代码学习

    Java多线程与同步是Java编程中的核心概念,它们在构建高效、响应迅速的应用程序时起着至关重要的作用。在大型系统开发中,多线程技术使得程序能够同时执行多个任务,提高系统的并发性,而同步机制则确保了在多线程...

    java多线程编程详解

    在"JAVA多线程编程详解-详细操作例子.doc"和"Java多线程编程详解.doc"文档中,你应该能找到关于以上知识点的具体示例和深入解释,包括如何创建线程、线程间的通信(如wait/notify机制、Semaphore、CountDownLatch)...

    Java 多线程与并发(5-26)-关键字- volatile详解.pdf

    总的来说,`volatile`关键字在Java多线程编程中起到的关键作用是提供轻量级的同步机制,解决了变量在多线程环境下的可见性和有序性问题。然而,它不能替代所有的同步机制,对于需要保证原子性的操作或对多个变量的...

    Java 多线程编程详解.pdf

    总之,《Java多线程编程详解》这份PDF文档全面覆盖了Java多线程编程的核心内容,无论你是初学者还是有经验的开发者,都能从中受益。通过学习,你可以更好地理解和掌握如何在Java中有效地利用多线程,提升程序的性能...

Global site tag (gtag.js) - Google Analytics