首页 > 图灵资讯 > 技术篇>正文
Java并行编程中synchronized关键字的用法与原理
2024-04-19 13:39:32
java 中的 synchronized 关键字通过获取对象锁实现同步,防止多线程同时访问共享资源,导致数据竞争。其使用方法包括同步方法和同步代码块 this 表示当前对象。
Java 并行编程 synchronized 关键字 原理synchronized
关键字用于同步访问共享资源,防止多线程同时访问同一资源造成的数据竞争问题。它通过获取锁定 (monitor
) 实现同步。当一个线程被锁定时,其他线程需要等待,直到锁被释放。
锁与对象有关。当一个线程锁定一个对象时,其他线程不能锁定对象。
使用方式synchronized
有两种使用方式:
- 同步方法
public synchronized void myMethod() { // 同步代码块 }
登录后复制
- 同步代码块
public void myMethod() { synchronized (this) { // 同步代码块 } }
登录后复制
其中,this
表示当前对象。
以下是线程不安全的计数器类:
public class UnsafeCounter { private int count = 0; public void increment() { count++; } }
登录后复制
若同时调用多个线程 increment()
可能会导致方法 count
不准确。为了解决这个问题,我们可以使用它 synchronized
对 increment()
同步方法:
public class SafeCounter { private int count = 0; public synchronized void increment() { count++; } }
登录后复制
现在,多个线程可以安全调用 increment()
因为这种方法被采用了方法 synchronized
关键字保护。
以上是Java并行编程中synchronized关键词的用法和原理的详细内容。请关注图灵教育的其他相关文章!