Synchronized - ключевое слово для обеспечения потокобезопасности. Оно может применяться к методам или блокам кода. При входе в synchronised блок или метод поток пытается получить intrinsic lock (монитор объекта). Если lock занят другим потоком, текущий поток блокируется до освобождения lock.
Преимущества Synchronized:
Недостатки Synchronized:
Пример Synchronized:
java
Lock - это интерфейс и набор классов в пакете java.util.concurrent.locks
, предоставляющий более гибкие возможности управления блокировками. Основной класс - ReentrantLock
.
Преимущества Lock:
tryLock()
), можно прерывать ожидание lock (lockInterruptibly()
), можно иметь разные типы lock (например, ReadWriteLock
).ReentrantLock(boolean fair)
).isLocked()
).Недостатки Lock:
lock()
и unlock()
. Обязательно использовать блок finally
для освобождения lock, чтобы избежать deadlock в случае исключения.Пример Lock:
java
Synchronized - ключевое слово для обеспечения потокобезопасности. Оно может применяться к методам или блокам кода. При входе в synchronised блок или метод поток пытается получить intrinsic lock (монитор объекта). Если lock занят другим потоком, текущий поток блокируется до освобождения lock.
Преимущества Synchronized:
Недостатки Synchronized:
Пример Synchronized:
java
Lock - это интерфейс и набор классов в пакете java.util.concurrent.locks
, предоставляющий более гибкие возможности управления блокировками. Основной класс - ReentrantLock
.
Преимущества Lock:
tryLock()
), можно прерывать ожидание lock (lockInterruptibly()
), можно иметь разные типы lock (например, ReadWriteLock
).ReentrantLock(boolean fair)
).isLocked()
).Недостатки Lock:
lock()
и unlock()
. Обязательно использовать блок finally
для освобождения lock, чтобы избежать deadlock в случае исключения.Пример Lock:
java
Register or sign in to get access to full answers for all questions from the question bank.