线程安全

无论何时,只要有多于一个的线程访问给定的状态变量,而且其中某个线程会写入改变量,此时必须使用同步来协调线程对改变量的访问。例如用synchronized关键字,提供了独占锁.或者volatitle变量,显示锁和原子变量的使用。

什么是线程安全性


    可以被多个程序线程调用,这些线程之间没有非预期的交互
      可以同时被多个线程调用,而调用者不需要任何动作(来确保线程的安全性)
      总结如下:当多个线程访问一个类的时,如果不用考虑这些线程在运行时环境下的调度和交替执行,并且不需要额外的同步及在调用方代码不必做其他的协调,这个类的行为仍然是正确的,那么这个类可以称为是线程安全的.线程安全的类封装了任何必要的同步,因此客户不需要自己提供

无状态对象永远都是线程安全的.

原子性

++i,不是原子操作
惰性初始化操作必须是原子操作
为了保护状态的一致性,要在单一的原子操作中更新相互关联的状态变量

synchronized介绍

锁对象的引用
改方法是对整个方法体的代码块锁住
如果有A请求一个被B线程占有的锁时,此时A必须等待或者阻塞,直到B释放它,如果B不释放A永远等待下去

你可能感兴趣的:(JAVA并发)