2008-10-20 13 views

Odpowiedz

9

Według tej strony: http://en.csharp-online.net/CSharp_FAQ:_What_is_the_difference_between_CSharp_lock_and_Java_synchronized, C# i Java synchronizedlock kod bloki są "semantycznie identyczne", podczas gdy w metodach, Java używa synchronized natomiast C# używa atrybutu: [MethodImpl(MethodImplOptions.Synchronized)].

+0

Nie, "semantycznie identyczne" jest to, czego potrzebowałem usłyszeć ... i czy były jakieś "grzęźnie", ale ta strona wydaje się być całkiem jasne. Dzięki. Stackoverflow to moje nowe Google. ;) – Epaga

5

Interesującą różnica nieobjęte w linku wysłana przez Keeg: o ile mi wiadomo, nie ma odpowiednik metoda nazywa w języku Java dla .NET na Monitor.Enter i Monitor.Exit, której oświadczenie C# lock sprowadza. Oznacza to, że nie można wykonać równoważnego pliku o wartości Monitor.TryEnter - chociaż oczywiście pakiet java.util.concurrent.locks (od wersji 1.5) ma wiele blokad, które mają więcej dostępnych funkcji.

-1

Java nie musisz się martwić o blokowanie typów publicznych, które posiadasz.

W .NET, ty have to

Aktualizacja: to jest dla typów, które posiadasz. Blokowanie typów publicznych, których nie posiadasz, jest złe w każdym języku :)

+2

Nie, nadal nie jest dobrym pomysłem blokowanie publicznych odniesień w Javie. Co sprawia, że ​​myślisz, że jest w porządku w Javie? –

+0

Chociaż interesujący link, to w sposób grzeczny (i rzeczowo) nie omawia kwestii zamykania typów publicznych. Zgadzam się z tym, że nie powinieneś tego robić ... Szkoda, że ​​robi to [MethodImpl] ... –

+1

zablokować coś publicznego i czekać na idiotę, aby umieścić na nim blokadę. –

Powiązane problemy