一文彻底搞懂synchronized实现原理-3. synchronized 使用

synchronized关键字可以修饰方法、代码块或静态方法,用于确保同一时间只有一个线程可以访问被synchronized修饰的代码片段。

  • 修饰实例方法: 当synchronized修饰实例方法时,锁住的是当前实例对象(this)。这意味着在同一时刻,只能有一个线程访问此方法,其他线程需要等待当前线程执行完毕才能执行该方法。修饰实例方法的方式可以确保对实例变量的访问是线程安全的。
public synchronized void methodName() {
    // synchronized 代码块
}
  • 修饰静态方法: 当synchronized修饰静态方法时,锁住的是类的Class对象。因此,无论多少个该类的实例存在,同一时刻也只有一个线程能够访问此静态同步方法。这种方式可以确保对静态变量的访问是线程安全的。
public static synchronized void staticMethodName() {
    // synchronized 代码块
}
  • 修饰代码块: 使用 synchronized 关键字修饰一个代码块,将需要同步的代码包裹在 synchronized 关键字所修饰的代码块中。通过指定对象作为锁,可以更精确地控制同步范围,只有持有该对象锁的线程才能执行被synchronized修饰的代码块。
synchronized (obj) {
    // 需要同步的代码块
}

synchronized关键字确保了对共享资源的访问是线程安全的。但过多地使用synchronized可能会导致性能问题,因此在设计并发程序时需要权衡考虑。

上一篇:关于未来自我的发展和一些学习方法(嵌入式方向)


下一篇:时序预测 | Matlab实现CPO-LSTM【24年新算法】冠豪猪优化长短期记忆神经网络时间序列预测