在java中我们通过同步机制来解决线程的安全问题
那么线程安全问题的解决方式一共有几种呐?(可能会出面试题)- 一共有三种:
第一种:使用同步代码块的方式
- 同步代码块:使用synchronized关键字修饰的代码块我们就称之为同步代码块
第二种:使用同步方法的方式
- 同步方法:使用synchronized关键字修饰的方法我们就称之为同步方法
- 比如我们的StringBuffer类和StringBulider类的最大的区别就是StringBuffer是线程安全的(但是效率比StringBuilder要低)那么这里的StringBuffer之所以是线程安全的其实根本原因就是因为StringBuffer中的方法都是由synchronized关键字修饰的
第三种:使用Lock锁的方式
- 这里的Lock锁是一个接口(java.lang.concurrent.locks.lock)
- 我们其实使用Lock锁解决线程安全的问题是要创建一个Lock接口的实现类的对象,然后用这个对象调用其中的一些方法来启动同步
我们其实也可以说是有两种方式来解决线程安全问题,那么这个时候其实也就是将我们的第一种方式和第二种方式结合为一种方式,也就是使用synchronized的方式,第二种就还是使用Lock锁的方式
Lock锁是jdk1.5之后(包括jdk1.5)出现的一个新特性


![如何处理线程安全问题[java] 如何处理线程安全问题[java]](http://www.mshxw.com/aiimages/31/573098.png)
