С точки зрения предприятия, развивая язык не хорошая вещь, это на самом деле довольно плохо.
Вот почему Вы слышите более старые языки как Кобол, Фортран и даже C записанный с числами года после них - много палок предприятий с тем годом.
Вдобавок ко всему, более многочисленные команды имеют в виду больше шанса, что кто-то в Вашей команде сделает, другие материала не понимают, таким образом, существует важное, но недооцененное значение в хранении языка, простого и чистого. Это означает не добавлять слишком много альтернативных способов сделать вещи.
я работал с Ruby и имел шар с языком, но рассмотрение его с точки зрения предприятия, это был абсолютно ужасающий язык. Я не мог считать способы, которыми плохой программист мог испортить многочисленную команду, вынудив их провести дни, распутав путаницу, созданную в минутах.
существуют компании, которые отказываются переходить к java 5.0 из-за сложности дженериков. (Мы все еще продолжаем работать 1.3x, но это по другой причине).
И честно, большинство "Улучшений" покупает Вас очень мало. Некоторое изменение синтаксиса, способность удалить несколько уровней фигурных скобок.
я не могу думать о единственном случае, где Java вынудил меня повторить бизнес-логику (Который является тем, что я волную по поводу того, когда я пытаюсь сделать свой код "DRY") - это - достаточно чистый язык, чтобы быть полностью DRY, если Вы - хороший программист.
, Например, что-либо можно сделать с закрытием, которое можно сделать с подклассом, не повторяя бизнес-логику - что Вы заканчиваете со взглядами, хуже из-за слоев определений классов фигурных скобок / дополнительных определений классов, но является часто более допускающим повторное использование (Можно расширить класс, который Вы используете для реализации обратного вызова, но Вы не можете расширить метод закрытия, необходимо переписать его.)
я не чувствовал этот путь о коде в течение первых нескольких десятилетий моей карьеры (я ЛЮБЛЮ приемы языка, более броское лучше), но теперь я был в этом долгим временем - Это могла быть моя старость, крадущаяся в, или это мог быть опыт, но теперь я вижу огромные преимущества для простого, явного, стабильного кода (предлагаемый языком, который не позволит Вам выделывать фокусы), и не может действительно найти единственное преимущество для многих альтернативных методов, даже если они сохраняют строку или два из ввода.
, Если Вы ищете обновление Java, однако, взгляд на Scala. Это довольно чертовски удивительно, все еще работает на JVM, взаимодействует с Java, и т.д.
Как уже упоминалось здесь ...
Но чтобы дадим вам краткое представление: блокировка
- это не что иное, как замена Monitor.Enter
и Monitor.Exit
. Только это с блокировкой Monitor.Exit
помещается в блок finally.
Итак, то, что вы ДЕЙСТВИТЕЛЬНО блокируете (в вашем коде), является объектом блокировки. Итак, в любом месте вашего кода, если вы используете этот объект-шкафчик для блокировки, этот блок кода будет заблокирован.
Я предполагаю, что ваша блокировка работает так: (гуру, пожалуйста, поправьте меня, если я ошибаюсь)
if(locker.SyncBlockIndex <0)>
{
//obtain an index to free synch cache block
//assign the index obtained in previous step to obj.SyncBlockIndex
}
syncblock = syncblockCache[locker.SyncBlockIndex]
if(!syncblock is owned by the calling thread)
{
//susped the calling thread
}
Посмотрите, поможет ли вам эта ссылка разобраться в блокировке (я написал это сообщение некоторое время назад)