Haben diese beiden Keywords genau die gleiche Wirkung, oder sollte ich etwas beachten?Gibt es Unterschiede zwischen Java "synchronisiert" und C# "Sperre"?
Antwort
Nach dieser Seite: http://en.csharp-online.net/CSharp_FAQ:_What_is_the_difference_between_CSharp_lock_and_Java_synchronized, C# lock
und synchronized
Codeblocks Java sind "semantisch identisch", während für Methoden, Java synchronized
verwendet, während C# ein Attribut verwendet: [MethodImpl(MethodImplOptions.Synchronized)]
.
Ein interessanter Unterschied nicht in den Link gepostet von Keeg bedeckt: soweit mir bekannt ist, gibt es kein Äquivalent Methode für .NET ist in Java ruft Monitor.Enter und Monitor.Exit, die die C# lock
Erklärung läuft darauf hinaus. Das heißt, Sie können nicht das Äquivalent von Monitor.TryEnter entweder - obwohl natürlich die java.util.concurrent.locks-Paket (ab 1.5) hat eine Vielzahl von Sperren, die mehr Funktionen zur Verfügung haben.
In Java müssen Sie sich nicht darum kümmern, öffentliche Typen zu sperren, die Ihnen gehören.
In .NET Sie have to
Aktualisiert: dies ist für die Typen, die Sie besitzen. Sperren auf öffentlichen Typen, die Sie nicht besitzen, ist in jeder Sprache schlecht :)
Nein, es ist immer noch eine schlechte Idee, öffentliche Referenzen in Java zu sperren. Was lässt dich denken, dass es in Java in Ordnung ist? –
Während es ein interessanter Link ist, diskutiert es absolut (und angeblich) nicht das Thema der Sperrung öffentlicher Typen. Wem ich zustimme, sollte das nicht tun ... es ist eine Schande, dass [MethodImpl] es so macht ... –
Vergesst etwas Öffentliches und wartet darauf, dass ein Idiot auch ein Deadlocking-Lock auflegt. –
- 1. Gibt es Unterschiede zwischen ANSI C und ISO C?
- 2. Unterschiede zwischen Java und C# und .NET
- 3. Gibt es Unterschiede zwischen Klassenimporten und Paketimporten in Java?
- 4. Unterschiede zwischen C# async und Java ExecutorService
- 5. Serialisierung - Unterschiede zwischen C++ und Java
- 6. Unterschiede zwischen. Net Hashtable, Java Hashtable & HashMap
- 7. Gibt es Unterschiede zwischen diesen beiden Linien?
- 8. Bedingte Operator Unterschiede zwischen C und C++
- 9. Gibt es Unterschiede zwischen Senden und Senden in SimGrid?
- 10. Gibt es wichtige Unterschiede zwischen Camping und Sinatra?
- 11. Gibt es in Jasmine irgendwelche Unterschiede zwischen beforeAll() und lassen?
- 12. Gibt es große Unterschiede zwischen Log4J 1.2 und Log4J 2.0?
- 13. Gibt es Unterschiede zwischen neuem F und neuem F()?
- 14. Unterschiede zwischen JDK und Java SDK
- 15. Unterschiede zwischen Java-Applet- und Anwendungsgrafikfähigkeiten
- 16. Unterschiede zwischen C++ OOP und PHP OOP
- 17. Java LinkedList - Unterschiede zwischen Abrufoperationen
- 18. Unterschiede zwischen Scala und Java-Enumerationen
- 19. C# Unterschiede zwischen Ergebnis und ContinueWith
- 20. Gibt es Unterschiede in der Implementierung zwischen Oktas SAML Java Toolkit und OpenSAML?
- 21. Unterschiede zwischen C# 2 und 3
- 22. Unterschiede zwischen RxJava1 und RxJava2
- 23. Gibt es einen Unterschied zwischen C c; und Cc = C();
- 24. Was sind die Unterschiede zwischen C und C++ Aufrufkonventionen?
- 25. Unterschiede zwischen Minimalschlüssel und Kandidatenschlüssel?
- 26. Bash Unterschiede zwischen {} und()?
- 27. Delphi - Gibt es eine Entsprechung zu C# -Sperre?
- 28. Unterschiede zwischen AForge und OpenCV
- 29. Warum gibt es Unterschiede zwischen diesen beiden Codes?
- 30. Ausführungszeit Unterschiede, gibt es irgendwelche?
Nein, "semantisch identisch" ist, was ich hören musste ... und ob es irgendwelche "gotchas" gab, aber diese Seite scheint zu sein ziemlich klar. Vielen Dank. Stackoverflow ist mein neues Google. ;) – Epaga