Czy te dwa słowa kluczowe mają dokładnie taki sam efekt, czy jest coś, o czym powinienem wiedzieć?Czy są jakieś różnice między "zsynchronizowaną" Javą i "blokadą" C#?
Odpowiedz
Według tej strony: http://en.csharp-online.net/CSharp_FAQ:_What_is_the_difference_between_CSharp_lock_and_Java_synchronized, C# i Java synchronized
lock
kod bloki są "semantycznie identyczne", podczas gdy w metodach, Java używa synchronized
natomiast C# używa atrybutu: [MethodImpl(MethodImplOptions.Synchronized)]
.
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.
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 :)
Nie, nadal nie jest dobrym pomysłem blokowanie publicznych odniesień w Javie. Co sprawia, że myślisz, że jest w porządku w Javie? –
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] ... –
zablokować coś publicznego i czekać na idiotę, aby umieścić na nim blokadę. –
- 1. Serializacja - różnice między C++ i Javą
- 2. Czy są jakieś różnice między tymi dwoma liniami?
- 3. Czy są jakieś różnice funkcjonalne między C# uszczelnione i ostateczne słowo kluczowe Java?
- 4. Jakie są różnice w JIT między Javą a .Net
- 5. Różnice między C: i C:/
- 6. Różnica między monitorem i blokadą?
- 7. Jakie są różnice między inline-c i language-c-inline?
- 8. Jakie są niezgodne różnice między C (99) i C++ (11)?
- 9. Różnice w składni RegEx między Pythonem i Javą
- 10. Jakie są różnice między LinFu.DynamicProxy i Castle.DynamicProxy?
- 11. Czy są jakieś istotne różnice między Log4J 1.2 i Log4J 2.0?
- 12. Czy są jakieś różnice między tablicą a spakowaną tablicą w Delphi?
- 13. Jakie są różnice między Haskell i PureScript?
- 14. Jakie są różnice między utf8_general_ci i utf8_unicode_ci?
- 15. Jakie są różnice między @dynamic i @synthesize?
- 16. Różnice między strukturą C i C++
- 17. Jakie są różnice między PECL i PEAR?
- 18. Jakie są różnice między Conda i Anaconda
- 19. Czy są jakieś "wzorce projektowe" w C?
- 20. Czy są jakieś istotne różnice między blokami w Ruby vs Groovy?
- 21. Różnice między App.Config i Web.Config?
- 22. Jakie są różnice między JSP, PHP, HTML5 i javascript?
- 23. Jakieś praktyczne różnice między wersjami Clang 2.8 i 3.1 dla programisty C?
- 24. Czy istnieją różnice pomiędzy "i"
- 25. Jakie są różnice między wersją g ++ 4.0.0.8 i 4.3.2?
- 26. Jakie są różnice między C, C# i C++ pod względem aplikacji świata rzeczywistego?
- 27. jakie są różnice między r i rb w fopen
- 28. Jakie są różnice między `` pushManager.getSubscription` pushManager.subscribe` i usługi pracownika
- 29. Jakie są różnice między sqlite3 z python2.5, pysqlite i apsw
- 30. Jakie są różnice między Vanilla Perl i Strawberry Perl?
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