Есть ли различия между "синхронизированным" в Java и "замком" в C #? - PullRequest
13 голосов
/ 20 октября 2008

Дают ли эти два ключевых слова абсолютно одинаковый эффект, или я должен знать о них что-то?

Ответы [ 3 ]

10 голосов
/ 20 октября 2008

По данным этого сайта: 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)].

5 голосов
/ 20 октября 2008

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

0 голосов
/ 20 октября 2008

Я Java, вам не нужно беспокоиться о блокировке открытых типов, которыми вы владеете.

В .NET вы должны

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...