Synchronization in Respect to Multithreading in Java

2025 年 3 月 28 日 | 阅读 6 分钟

在 Java 多线程中,同步 确保多个线程对共享资源的受控访问,以防止数据不一致。同步的主要目标是避免线程干扰和内存可见性问题。

同步方法

Java 中的 同步 方法一次只允许一个线程访问。当执行一个同步方法时,调用线程会获取对 对象(实例方法)或 (静态方法)的锁。在持有锁的线程释放锁之前,它会阻止其他线程在该对象或类上运行同步方法。

语法

文件名:SynchronizationDemo.java

输出

 
Withdrawal successful. Remaining balance: 300
Insufficient funds. Withdrawal failed.   

同步代码块

在 Java 中,同步块用于同步特定的代码块,而不是整个 方法。它允许更精细地管理哪些代码段是同步的,从而减小了锁的范围,并可能提高性能。

语法

示例

文件名:Synchronized BlockDemo.java

输出

 
Count: 2000   

静态同步

静态同步是指同步 Java 中的静态方法或块。如果一个静态方法或块是同步的,那么锁与类对象相关联,而不是与任何特定的类实例相关联。它确保对于某个特定的类,无论有多少个类实例,一次只有一个线程可以运行同步的 静态方法 或块。

语法

文件名:StaticSynchronization.java

输出

 
Count: 2000   

可重入同步

可重入 同步 允许线程多次进入同步块或方法而不会发生死锁。这得益于 Java 的可重入同步功能,该功能允许线程多次获取同一个锁。

文件名:ReentrantDemo.java

输出

 
In outer Method
In inner Method   

使用 ReentrantLock 的示例

文件名:ReentrantDemo.java

输出

 
In outer Method
In inner Method