`
chenhua_1984
  • 浏览: 1251745 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

java 的线程安全

    博客分类:
  • java
阅读更多

     

         现代CPU基本都是多核,支持多线程工作的,每个CPU都有自己的高速缓存,多个CPU之间通过缓存一致性与主内存进行交互,Java的每个线程都有自己的工作内存,每个线程之间通过Java内存模型来和主内存交互,当多个线程同时操作或者共享同一个可变变量时,就有了我们经常提到的线程安全问题。

        

        解决线程安全的方案有几种,synchronization ,wait/notify等 其中volatile关键字有时候也被拿来解决线程安全的问题,但是根据官方的解释,volatile关键字用来修饰的变量只是对于线程的可见性,就是一个被volatie修饰的变量值被修改后,其他线程会立即知晓,但是这并不是说使用了volatile关键字就是线程安全的了。假如使用它,那么必须满足一下条件才相对安全:1 计算结果不依赖变量的当前值,或者只有一个线程来修改操作这个变量;2这个变量不需要与其他状态变量一起参与不变约束。这两个条件不是很好理解。所以为了安全起见,建议使用synchronization关键字来维护线程安全。

 

      java 对线程的控制不是绝对的,比如对线程优先级的调度,其底层实现还是交给操作系统去实现,那么在Java语言层面所作的优先级调度在不同的平台上表现可能不同,也就是这个优先级的调度并不可靠,所以有时候用优先级来调度程序是不现实的。

 

       提起synchronization关键字,这个出现的比较早,在Java5 出现了与之相竞争的reentrantLock 重入锁。reentrantLock刚出来的时候,性能比synchronization要好,但是在Java6以后,对synchronization做了优化,两次已经可以基本持平。 两个锁都为互斥锁,reentrantlock比synchronization又多了几个特性:1可中断等待 2 可实现公平锁(按时间先后),3 可以为多个条件加锁。需要手动释放。

 

 

      

 

       

分享到:
评论

相关推荐

    java线程安全总结.doc

    Java线程安全是多线程编程中的一个关键概念,它涉及到在并发环境下如何正确地管理共享资源,确保程序的正确性和一致性。以下是对Java线程安全的深入总结: ### 一、线程安全的定义 线程安全是指当多个线程访问同一...

    java线程安全测试

    Java线程安全是多线程编程中的一个关键概念,它涉及到多个线程访问共享资源时可能出现的问题。在Java中,线程安全问题通常与并发、内存模型和可见性有关。Java内存模型(JMM)定义了如何在多线程环境下共享数据的...

    JAVA线程安全及性能的优化.doc

    ### JAVA线程安全及性能优化的关键知识点 #### 一、JAVA内存模型与线程安全的基础概念 **JAVA内存模型**是理解线程安全的核心。不同的操作系统平台可能有不同的内存管理方式,但Java虚拟机(JVM)提供了一套统一的...

    Java线程安全问题_动力节点Java学院整理

    其实java的多线程并发问题最终都会反映在java的内存模型上,所谓线程安全无非是要控制多个线程对某个资源的有序访问或修改。总结java的内存模型,要解决两个主要的问题:可见性和有序性。我们都知道计算机有高速缓存...

    Java线程安全.docx

    "Java线程安全" Java线程安全是指在多线程并发编程中,如何确保线程安全地访问和修改共享资源的问题。Java内存模型(JMM)是Java虚拟机(JVM)定义的内存模型,旨在屏蔽底层平台的内存管理细节,提供了一个统一的...

    java线程安全总结

    ### Java线程安全的核心概念与实践 #### 一、Java内存模型 理解Java线程安全首先需要掌握Java内存模型(JMM)。JMM是Java虚拟机(JVM)的一部分,它规定了程序中各种变量(包括实例字段、静态字段和构成数组对象的...

    java线程安全以及生产者消费者demo

    Java线程安全与生产者消费者模型是多线程编程中的两个重要概念,它们在并发处理中扮演着关键角色。在Java中,线程安全是指一个类或者方法在多线程环境下能够正确地处理数据,避免数据的不一致性或竞态条件。而生产者...

    java线程安全总结.doc下载

    Java线程安全是多线程编程中的一个核心概念,尤其在服务器端开发中,理解并掌握线程安全至关重要。线程安全是指当多个线程访问一个对象时,如果这个对象的状态始终保持一致,那么我们就说这个对象是线程安全的。在...

    java线程安全总结.pdf

    标题“java线程安全总结.pdf”指向了文档的主要内容:这是关于Java编程语言中的线程安全问题的总结性资料。线程安全是并发编程中的一个核心概念,它与Java多线程技术紧密相关。文档的描述信息非常简洁,只是重复了...

    Java线程安全.pdf

    Java线程安全主要涉及到的是多线程环境下对共享资源的管理和控制,以确保并发执行的线程能正确地访问和修改数据,避免出现数据不一致或者竞态条件等问题。Java内存模型(JMM)是Java虚拟机规范的一部分,它定义了...

    Java 线程安全 与 锁.doc

    Java线程安全与锁是多线程编程中的关键概念,主要涉及到并发环境下对共享资源的访问控制。在Java中,线程安全问题主要是由于多个线程同时访问并修改同一份数据,导致数据不一致或者出现意外的行为。为了解决这个问题...

    java线程安全性总结

    用思维导图将Java线程安全性相关基本概念联系起来

    java线程安全总结[汇编].pdf

    Java线程安全是多线程编程中的一个核心概念,它涉及到在并发环境下如何正确地管理共享资源,确保程序的正确性和一致性。Java提供了一系列机制来处理线程安全问题,包括同步机制、线程局部变量、并发集合等。下面将...

    Java线程安全[借鉴].pdf

    Java线程安全主要涉及到的是在多线程环境下如何正确地管理和操作共享资源,以确保程序的正确性和一致性。Java内存模型(JMM)是解决这一问题的关键,它为多线程编程提供了一套规范,旨在解决可见性和有序性这两个...

    java线程安全性精讲.docx

    Java线程安全性是多线程编程中的核心概念,关乎程序的稳定性和正确性。Java提供了多种机制来确保线程安全,主要包括原子性、可见性和有序性。 **原子性**是线程安全的基础,保证了操作不会被其他线程打断。Java提供...

    java线程安全-往盘子里放鸡蛋和向盘子里取鸡蛋

    总之,"java线程安全-往盘子里放鸡蛋和向盘子里取鸡蛋"是一个典型的并发编程问题,通过合理使用Java提供的同步机制,我们可以确保在多线程环境下正确地管理和操作共享资源,避免数据不一致性和竞态条件等问题。...

Global site tag (gtag.js) - Google Analytics