Боюсь у Вас немного неправильное понимание работы biased locking. В случае biased lock в этом спец поле всегда лежит thread id, и вход в критическую секцию этим тредом просто приводит к увеличению счётчика вложенности локов без всяких CAS операций. Т.е. biased locking это оптимизация CAS, в расчёте что блокировку в основном использует один поток. Если приходит другой поток, и видит чужой thread id, то тогда он с помощью всяких хитрых штук проверяет счётчик и если он равен нулю, то производит re-biasing, заменяя thread id. И только если счётчик > 0 тогда уже лок раздувается до thin/fat лока.
А также на jug-ах инженеры Оракла говорили про то, что эта оптимизация включается не сразу после запуска jvm, а через некоторое время, чтобы избежать ненужных rebiasing.
Если быть более точным, то biased lock используется не совсем при старте, а через какое-то время после старта. Также есть проблема в том что после сваливания в fat lock практически не происходит обратного возвращения к spin/thin-lock-ам, хотя может в последних версиях jvm что-нибудь с этим сделали.
Т.е. получается что на старте synchronized работает довольно шустро, но чем дольше сервер работает, тем больше вероятность на конкретном локе получить блокировку и соответственно раздуться в fat lock.
Разве .filter(Math::max) будет работать? Как я понял у аргумента filter ожидается функция-предикат (от класса Predicate), т.е. принимающая 1 аргумент некого типа T и возвращающая boolean, т.е. max не подходит?
Это не приложение, а скорее набор библиотек, используется многими приложениями, например, totem или amarok.
Список тут: gstreamer.freedesktop.org/apps/
Я делал на основе gstreamer + gst-rtsp-server транскодирующий rtsp сервер.
Похоже библиотека не совместима с aspectj-maven-plugin. Из-за этого плагина в классах отсутствовали сгенерированные геттеры. Отключил aspectj-maven-plugin, получил следующий код после декомпиляции:
private final AtomicReference map = new AtomicReference();
public Map getMap()
{
AtomicReference value = (AtomicReference)map.get();
if(value == null)
synchronized(map)
{
value = (AtomicReference)map.get();
if(value == null)
{
Map actualValue = initMap();
value = new AtomicReference(actualValue);
map.set(value);
}
}
return (Map)value.get();
}
.../test/LombokTest.java:[23,4] 'lazy' requires the field to be private and final.
Сделал поле final, скомпилировал, потом декомпилировал jad-ом и не увидел геттеров.
Интересно, как будет выглядеть код ленивой инициализации, сгенерированный lombok, учитывая что double checked locking является антипаттерном и в java работает только если поле volatile.
На хабре была статья про то, что гугл это «рекламная компания». А соц. сеть это привлекательная для рекламодателей площадка размещения рекламы (высокая посещаемость, более точное таргетирование рекламы).
Гугл занялся соц. сетью потому что они видят в этом рекламные перспективы, а также их заботит потенциальное увеличение доли фейсбука в интернет рекламе за счёт доли гугла.
Plans for the next version of Java SE 8 are moving forward and Oracle is announcing a revised roadmap for a release with expanded scope, with availability expected in summer 2013.
У нас имеется опыт использования heartbeat. Опыт эксплуатации показал, что apache без heartbeat работает стабильнее чем с heartbeat. В конце концов отказались от использования heartbeat, просто настроили мониторинг без автоматического управления остановом/запуском сервисов через heartbeat.
В 15:00 или в 19:00? Тут написано что в 19:00, а если зарегистрироваться, то в 15:00
«Поздравляем, вы успешно зарегистрировались на событие „ScalaDay SPb“. Напоминаем, что оно пройдет 01 Октябрь 2011 в 15:00 по адресу Санкт-Петербург, пр. Обуховской Обороны, д. 70, корп. 2 БИ Ингрия»
А также на jug-ах инженеры Оракла говорили про то, что эта оптимизация включается не сразу после запуска jvm, а через некоторое время, чтобы избежать ненужных rebiasing.
jug.ru/archive/-/blogs/11484
и конкретно про synchronized vs ReentrantLock рекомендую почитать статью www.javaspecialist.ru/2011/11/synchronized-vs-reentrantlock.html
Т.е. получается что на старте synchronized работает довольно шустро, но чем дольше сервер работает, тем больше вероятность на конкретном локе получить блокировку и соответственно раздуться в fat lock.
Список тут: gstreamer.freedesktop.org/apps/
Я делал на основе gstreamer + gst-rtsp-server транскодирующий rtsp сервер.
in a, b=1, 2
out a, b=0, 1
@Getter(lazy=true) private Map<String, String> map = initMap();
Но при компиляции ошибка:
.../test/LombokTest.java:[23,4] 'lazy' requires the field to be private and final.
Сделал поле final, скомпилировал, потом декомпилировал jad-ом и не увидел геттеров.
Интересно, как будет выглядеть код ленивой инициализации, сгенерированный lombok, учитывая что double checked locking является антипаттерном и в java работает только если поле volatile.
Под его логином в шахту спускались четыре бригады…
Гугл занялся соц. сетью потому что они видят в этом рекламные перспективы, а также их заботит потенциальное увеличение доли фейсбука в интернет рекламе за счёт доли гугла.
Нашёл пресс релиз: www.oracle.com/us/corporate/press/512956
«Поздравляем, вы успешно зарегистрировались на событие „ScalaDay SPb“. Напоминаем, что оно пройдет 01 Октябрь 2011 в 15:00 по адресу Санкт-Петербург, пр. Обуховской Обороны, д. 70, корп. 2 БИ Ингрия»