线程安全方式有哪些 ???
前言
如何保证线程的安全 ???大部分学者都知道常见的synchronized、lock 关键字意外,是否还有其他的方案!
一 互斥同步
synchronized
-
说明
- Synchronized(非公平锁)是Java中解决并发问题的一种最常用最简单的方法,说它简单是因为程序出现异常JVM虚拟会自动释放锁,不会出现死锁情况。它可以确保线程互斥的访问同步代码。保证有序性,可见性,可重入。正因为使用简单,有些同学滥用synchronized导致性能反而降低。相比ReentrantLock性能上相差很多 ,因为synchronized会在用户态和内核态中切换,是 重量级锁。
synchronized 可以作用哪些地方?锁住的对象是实例对象,还是类对象?
分类 | 锁定的对象 | 代码 |
---|---|---|
实例方法 | 类的实例对象 | public synchronized void method(){} |
静态方法 | 类对象 | public static synchronized void method(){} |
实例对象 | 类的实例对像 |