java并发_学习_04_线程安全

一、基本概念

1.定义

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

 

2.三性

(1)原子性

提供了互斥访问,同一时刻只能有一个线程来对它进行操作

 

 

(2)可见性

一个线程对主内存的修改可以及时的被其他线程观察到

(3)有序性

一个线程观察其他线程中的指令执行顺序,由于指令重琲序的存在,该观察结果一般杂乱无序

 

3.原子性

 (1)automic包

(2)锁:

synchronized :依赖JVM

Lock :依赖特殊的CPU指令,代码实现, ReentrantLock


比较:

synchronized:不可中断锁,适合竞争不激烈,可读性好

Lock:可中断锁,多样化同步,竞争激烈时能维持常态

Atomic:竞争激烈时能维持常态,比Lock性能好;只能同步一个值

 

posted @ 2018-07-05 13:43  shirayner  阅读(177)  评论(0编辑  收藏  举报