博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Java并发编程实战] 第2章 线程安全性
阅读量:2342 次
发布时间:2019-05-10

本文共 456 字,大约阅读时间需要 1 分钟。

  • 对象的状态中包含了任何可能影响其外部可见行为的数据

  • 计算过程中的临时状态仅存在于线程栈上的局部变量中,并且只能由正在执行的线程访问

  • 无状态对象一定是线程安全的

原子性:

  • 当某个计算正确性取决于多个线程的交替执行时序时,就会发生竞态条件

  • 先检查后执行:大多数竞态条件的本质,基于一种可能失效的观察结果来做出判断或者执行某个计算

  • 原子操作:对于访问同一个状态的所有操作(包括该操作本身)来说,这个操作是一个以原子方式执行的操作

加锁机制:

  • 每个Java对象都可以用作一个实现同步的锁——内置锁/监视器锁,一种互斥锁,可重入锁

  • 重入锁的一种实现方式,是为每个锁关联一个获取计数值和一个所有者线程

  • 每个共享的和可变的变量都应该只由一个锁保护,从而使维护人员知道是哪一个锁

  • 每个方法都同步也不足以保证符合操作是原子的

if( ! vector.contains(element))   vector.add(element)
  • 当执行时间较长的计算或者可能无法快速完成的操作时(例如网络I/O或控制台I/O),一定不要持有锁

转载地址:http://mlkvb.baihongyu.com/

你可能感兴趣的文章
Java连MySQL的驱动mysql-connector-java-5.1.21-bin.jar的安装方法
查看>>
java基础小结
查看>>
线程概念及死锁的理解
查看>>
数据结构之红黑树
查看>>
android学习之——界面 控件 体系 布局
查看>>
Eclipse开发Android程序在手机上运行
查看>>
ListView深入理解
查看>>
Activity的四种launchMode
查看>>
java面试题(7.22)
查看>>
java项目之——坦克大战01
查看>>
java项目之——坦克大战02
查看>>
java项目之——坦克大战03
查看>>
java项目之——坦克大战 04
查看>>
java项目之——坦克大战04.1
查看>>
java项目之——坦克大战05
查看>>
java项目之——坦克大战06
查看>>
java项目之——坦克大战09
查看>>
java项目之——坦克大战10
查看>>
java项目之——坦克大战11
查看>>
阿狸面经(牛客网)
查看>>