Le mot-clé synchronisé en Java réalise la synchronisation en acquérant des verrous d'objet pour empêcher la concurrence de données provoquée par plusieurs threads accédant simultanément à des ressources partagées. Son utilisation inclut des méthodes synchronisées et des blocs de code synchronisés, où cela représente l'objet actuel.
Le mot-clé synchronized
est utilisé pour synchroniser l'accès aux ressources partagées et empêcher la concurrence de données causée par plusieurs threads accédant à la même ressource en même temps . question. Il réalise la synchronisation en acquérant un verrou (moniteur
). Lorsqu'un thread acquiert le verrou, les autres threads doivent attendre que le verrou soit libéré avant de pouvoir continuer l'exécution. 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
synchronisé
a deux façons d'utiliser : 🎜this
représente l'objet actuel. 🎜🎜Cas pratique🎜🎜Ce qui suit est une classe de compteur non sécurisée pour les threads : 🎜rrreee🎜Si plusieurs threads appellent la méthode increment()
en même temps, cela peut provoquer le count code> valeur non valide et précise. Pour résoudre ce problème, nous pouvons utiliser <code>synchronized
pour synchroniser la méthode increment()
: 🎜rrreee🎜Maintenant, plusieurs threads peuvent appeler en toute sécurité increment() car cette méthode est protégée par le mot-clé <code>synchronized
. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!