线程安全性

发表时间:2017-09-03 23:17:00 浏览量( 24 ) 留言数( 0 )

学习目标:

1、什么时线程安全

2、什么情况下需要考虑线程安全

3、如何保证线程安全


学习过程:

一、什么线程安全

    对于这个概念事实上时没有要给统一的标准,线程安全必须满足的条件就是正确性,一般我们说的线程安全都是值在多线程访问同一个可变的状态变量时使用了合适的同步机制,不会因为多线程的访问导致数据或者状态的不一致性。

二、什么情况下需要考虑线程安全

    多线程需要共享变量的时候需要考虑线程安全,如果没有变量需要共享,那么当然也就不需要考虑,因为线程在运行的时候会把变量拷贝到线程里面,作为线程的局部变量,所以如果不需要共享变量,自然也就不需要考虑线程安全了。

   类似数据库脏读的,一个线程在访问一个变量时,这个变量有可能已经给另外一个线程修改了,这个时候如果没有必须要考虑线程安全,那么也就不要使用同步的方法。

    而如果一个方法并不需要考虑线程安全问题,那么也完全没有必要画蛇添足添加同步的方法,因为每一次进入这个方法JVM都会检测一次,效率会极大的降低的。

三、如何保证线程的安全性呢

    在Java里面我们可以使用同步的方法,JVM为每一个对象都会有一个锁,在进入这个对象的时候会检测锁,在往后的课程里面我们还会结束lock的方法,原子变量和一些线程安全的集合类,这些类都是实现了线程安全的。