美文网首页
线程安全性

线程安全性

作者: cheniot | 来源:发表于2018-11-03 23:16 被阅读0次

定义

当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类就能表现出正确的行为,那么就称这个类时线程安全的。

状态与线程安全

1,无状态对象一定是线程安全的。
2,当无状态的类中添加一个状态时,如果该状态完全使用线程安全的对象(例如:AcomicLong)管理,则该类线程安全。
3,当状态变量的数量由一个变为多个时,即使每个状态都是线程安全的对象来管理,也未必线程安全。

与线程安全相关的名词

原子性:原子操作是指,对于访问同一个状态的所有操作(包括该操作本身)来说,这个操作是一个原子方式执行的操作
竞态条件: 当某个计算的正确性取决于多个线程的交替执行时序时,那么就会发生竞态条件。
复合操作: 我们将“先检查后执行”以及“读取-修改-写入”等操作统称为复合操作:包含了一组必须以原子方式执行的操作以确保线程安全性

内置锁

synchronized(lock){
//访问或修改由锁保护的共享状态
}

1,内置锁是支持重入的。
2,在有状态的对象中,可以使用锁来保护状态。
3,当用锁来保护状态时,如果一个操作中要调用多个方法来操作状态,那么,即使每个方法都是同步方法,也未必是线程安全的,仍然可能存在竞态条件。

相关文章

  • EffectiveJava第十章第五节

    线程安全性的文档化 并非出现synchronized关键字就是线程安全性文档化了。实际上,一个类支持的线程安全性有...

  • String的线程安全

    线程安全性 说道有关string的线程安全性,大家想到的肯定时stringbuffer和stringbuilder...

  • Java并发编程 线程安全性

    什么是线程安全性 线程安全性:当多个线程访问某个类时,不管运行时采用何种调度方式或者这些线程将被如何交替执行,并且...

  • java并发编程实战2~3

    2 线程安全性 2.1 什么是线程安全性 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何...

  • 谈谈并发编程中的线程安全性

    1. 线程安全性 在单线程程序中,我们并不需要去考虑线程的安全性。但是在多线程程序中,由于多个线程要共享相同的内存...

  • 线程安全性(一)

    参考线程安全性总结 CountDownLatchCountDownLatch 可以阻塞线程并保证线程在满足某种特定...

  • 高并发编程03 ~ 线程安全性

    这节我们讨论一个话题:线程安全性 一、概念 线程安全性:当多个线程同时访问某个资源的时候,不管环境采用何种调度方式...

  • 线程安全性详解

    线程安全性 线程安全性定义: 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些进程将如何交替执行,并...

  • 理解Java中的线程安全及处理方法

    1. 线程安全性 1.1. 继承方式VS实现方式(掌握) 当多线程并发访问同一个资源时,会导致线程出现安全性的原因...

  • Effective STL 第12条

    容器的线程安全性 不能对容器的线程安全性抱太大的期望 对于stl容器,大部分容器只能保证1)支持多线程同时读2)支...

网友评论

      本文标题:线程安全性

      本文链接:https://www.haomeiwen.com/subject/olmlxqtx.html