Search
Write a publication
Pull to refresh
33
0
Николай Иванов @ivnik

Пользователь

Send message
Боюсь у Вас немного неправильное понимание работы biased locking. В случае biased lock в этом спец поле всегда лежит thread id, и вход в критическую секцию этим тредом просто приводит к увеличению счётчика вложенности локов без всяких CAS операций. Т.е. biased locking это оптимизация CAS, в расчёте что блокировку в основном использует один поток. Если приходит другой поток, и видит чужой thread id, то тогда он с помощью всяких хитрых штук проверяет счётчик и если он равен нулю, то производит re-biasing, заменяя thread id. И только если счётчик > 0 тогда уже лок раздувается до thin/fat лока.
А также на jug-ах инженеры Оракла говорили про то, что эта оптимизация включается не сразу после запуска jvm, а через некоторое время, чтобы избежать ненужных rebiasing.
Вообще относительно проблем производительности рекомендую посмотреть видео со встречи jug.ru:
jug.ru/archive/-/blogs/11484
и конкретно про synchronized vs ReentrantLock рекомендую почитать статью www.javaspecialist.ru/2011/11/synchronized-vs-reentrantlock.html
Блокировка происходит на объекте который указан в synchronized. Т.е. все синхронизации на этом объекте станут «fat».
Если быть более точным, то 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 сервер.
Да, не работает у меня, компилирую gcc (version 4.7.0) с дефолтными настройками.

in a, b=1, 2
out a, b=0, 1
Похоже библиотека не совместима с 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();
    }

Попробовал пример:

@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.
Вы знаете, как Стаханов стал рекордсменом?
Под его логином в шахту спускались четыре бригады…
На хабре была статья про то, что гугл это «рекламная компания». А соц. сеть это привлекательная для рекламодателей площадка размещения рекламы (высокая посещаемость, более точное таргетирование рекламы).
Гугл занялся соц. сетью потому что они видят в этом рекламные перспективы, а также их заботит потенциальное увеличение доли фейсбука в интернет рекламе за счёт доли гугла.
Я тоже там был летом :) Но 10 февраля они говорили про лето 2013.
Нашёл пресс релиз: www.oracle.com/us/corporate/press/512956

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.
На java day говорили что 8-ая java будет только летом 2013, и что переходят на 2х годичный цикл выпуска java.
У нас имеется опыт использования heartbeat. Опыт эксплуатации показал, что apache без heartbeat работает стабильнее чем с heartbeat. В конце концов отказались от использования heartbeat, просто настроили мониторинг без автоматического управления остановом/запуском сервисов через heartbeat.
В 15:00 или в 19:00? Тут написано что в 19:00, а если зарегистрироваться, то в 15:00

«Поздравляем, вы успешно зарегистрировались на событие „ScalaDay SPb“. Напоминаем, что оно пройдет 01 Октябрь 2011 в 15:00 по адресу Санкт-Петербург, пр. Обуховской Обороны, д. 70, корп. 2 БИ Ингрия»

Наконец-то можно будет позвонить на пульт для телевизора!!!

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity