Показаны сообщения с ярлыком synchronized. Показать все сообщения
Показаны сообщения с ярлыком synchronized. Показать все сообщения

понедельник, 7 декабря 2009 г.

Biased Locking

Техника, называемая Biased Locking была добавлена в Java 6 и состоит в том, что для несовревновательных повторных вызовов synchronized{} обходится очень дешево. Кажется, вот это - "Eliminating Synchronization-Related Atomic Operations with Biased Locking and Bulk Rebiasing" ключевая статья.

P.S. Взято отсюда - "Java SE 6 Performance White Paper".

P.P.S. Во многом благодаря biased locking (при использовании монитора только одним потоком не используется мьютекс операционной системы, а !максимум! одна атомарная инструкция) synchronized в яве может работать быстрее мьютекса операционной системы - "...the synchronization primitives in modern JVMs provide latency and throughput performance that is typically better than that of the native pthreads_mutex constructs..."

четверг, 15 октября 2009 г.

ReentrantLock vs synchronized (15 oct lecture)

Brian Goetz, "More flexible, scalable locking in JDK 5.0" (EN, RU).
- timed lock waits
- interruptible lock waits
- non-block-structured-locks
- multiple condition variables
- lock polling
- fair policy
Но учтите, это для Java 5, тут еще не ускорили synchonized (естественно - не ускорили в конктерной JVM - в Sun HotSpot JVM).

А вот для Java 6, уже ускорили synchronized (в HotSpot JVM):
Brian Goetz, "Synchronization optimization in Mustang" (EN, RU)
- lock elision (senks to escape analisys)
- lock coarsening
- adaptive spin lock (не рассказывал)

Про escape-analisys можно кратко почитать тут
Brian Goetz, "Urban performance legends, revisited" [EN, RU]

суббота, 26 сентября 2009 г.

лекция #2: BoundedBuffer

Реализации ограниченного буфера
1) с использованием synchronized/wait()/notifyAll()
2) с использованием Lock/Condition
3) тест
Обе реализации получены модификацией исходного кода класса java.util.concurrent.ArrayBlockingQueue.