Java线程同步安全问题的三种解决方案

1.synchronized同步代码块

注意:在任何时候,最多允许一个线程拥有同步锁,谁拿到锁就进入代码块,其他的线程只能在外等着(BLOCKED)。

synchronized(同步锁){
需要同步操作的代码
}

1.1对象锁

  • synchronized(this|object) {}

1.2类锁

  • synchronized(类.class) {}

2.synchronized方法

public synchronized void method(){
可能会产生线程安全问题的代码
}

3.lock锁

java.util.concurrent.locks.Lock 机制提供了比synchronized代码块和synchronized方法更广泛的锁定操作,
同步代码块/同步方法具有的功能Lock都有,除此之外更强大,更体现面向对象。
Lock锁也称同步锁,加锁与释放锁方法化了,如下:
public void lock() :加同步锁。
public void unlock() :释放同步锁。

使用方法
在可能出现同步问题的代码前加上lock锁
在代码块结束后释放lock锁

你可能感兴趣的:(JAVA,多线程,并发编程,java)