2008-10-20 2 views

ответ

9

Согласно сайту: http://en.csharp-online.net/CSharp_FAQ:_What_is_the_difference_between_CSharp_lock_and_Java_synchronized, C# lock и Java synchronized блоки кода являются "семантически идентичны", в то время как для методов, Java использует synchronized в то время как C# использует атрибут: [MethodImpl(MethodImplOptions.Synchronized)].

+0

Нет, «семантически идентичный» - это то, что мне нужно было услышать ... и были ли какие-либо «gotchas», но эта страница, похоже, довольно ясный. Благодарю. Stackoverflow - мой новый Google. ;) – Epaga 2008-10-20 07:32:19

5

Одно интересное различие не охватывается в ссылке разместил Keeg: насколько я знаю, нет никакого эквивалента метод вызывает в Java для .NET-х Monitor.Enter и Monitor.Exit, что оператор C# lock сводится. Это означает, что вы также не можете сделать эквивалент Monitor.TryEnter - хотя, конечно, пакет java.util.concurrent.locks (с 1,5) имеет множество блокировок, которые имеют больше доступных функций.

-1

I java вам не нужно беспокоиться о блокировании публичных типов, которые у вас есть.

В .NET, have to

Обновлено: это для типов, которые вы владеете. Блокировка на публичных типах, которые вы не владеете, плоха на любом языке :)

+2

Нет, это еще плохая идея блокировать публичные ссылки на Java. Что заставляет вас думать, что на Java все в порядке? – 2008-10-20 08:29:27

Смежные вопросы