Verstehe nicht, warum mark() und reset() synchronisiert sind und warum read() nicht?Warum nur mark() und reset() in java.io.InputStream synchronisiert werden?
Antwort
java.io.InputStream ist eine abstrakte Klasse. Es verfügt über eine Standardimplementierung für mark/reset, die beim Zurücksetzen nur eine Ausnahme auslöst, die nicht unterstützt wird, so dass Unterklassen, die dies nicht unterstützen, keine eigene Methode codieren müssen, die die Ausnahme auslöst. "synchronisiert" ist für den Standardfall nicht nützlich, um eine Ausnahme auszulösen.
Jede Unterklasse, die dies unterstützt, muss diese Methoden überschreiben und die Synchronisation wird nicht übernommen, sodass die überschriebenen Methoden synchronisiert werden können.
Ich denke, es hat keine Wirkung.
Ich denke, es ist ein Design-Fehler ohne Folgen oder vielleicht ist es eine Warnung, so dass Programmierer, die Unterklasse es diese Methoden auch zu synchronisieren, weil es so gemacht werden sollte.
- 1. InputStream, mark(), reset()
- 2. java.io.IOException: mark/reset nicht unterstützt
- 3. Wie kann ich einen ObjectInputStream erhalten, der Mark/Reset unterstützt?
- 4. Warum Thread.Sleep synchronisiert Threads?
- 5. Robustes Überspringen von Daten in einem java.io.InputStream und seinen Subtypen
- 6. Warum '$ ("# form") [0] .reset();' funktioniert und '$ ("# form"). reset();' nicht?
- 7. Warum muss die Methode acquire() in Semaphoren nicht synchronisiert werden?
- 8. Warum sollen die Daten in der Browserhistorie synchronisiert werden?
- 9. Muss die Methode synchronisiert werden?
- 10. Mark aktuelle Linie und
- 11. Warum vor git reset rufen git reset --soft explizit (--mixed)
- 12. Wie können Tabellenansicht und Suchleistenauswahl in Swift synchronisiert werden?
- 13. Wie oft werden NSUserDefaults synchronisiert?
- 14. Können Gabeln in gitHub automatisch synchronisiert werden?
- 15. Warum "synchronisiert" keine Rolle im Polymorphismus spielt
- 16. Rails 5: ActionCable und db werden nicht synchronisiert
- 17. Sollen die Singleton-Methoden synchronisiert werden?
- 18. Wie werden zwei Ordner automatisch synchronisiert?
- 19. ngModel und Reset-Wert
- 20. istringstream - warum gibt es keine Reset-Funktion
- 21. Warum Reset Python globaler Wert wirksam nicht
- 22. Node.js GC Mark-kompakt
- 23. Synchronisiert Ordner in vagrant synchronisiert wird nicht in Echtzeit
- 24. Devise Reset Password Link Umleitung auf Homepage nur in Produktion
- 25. Wie funktionieren Mark Sweep und Scavenge Counts?
- 26. Warum kann SmtpClient.SendAsync nur einmal aufgerufen werden?
- 27. CSS Reset-vs * Wild Card
- 28. Warum YUI Reset CSS Validation nicht besteht?
- 29. "Mark" SVN-Export mit Revision
Vermutlich weil Rennen zwischen Mark und Reset auftreten können, aber nicht gelesen werden. – aioobe
Es ist ein bisschen seltsam, wenn man bedenkt, dass diese Methoden nichts InputStream machen. Wenn Sie sich ByterrayInputStream anschauen, der mark/reset unterstützt, werden Sie sehen, dass die meisten Methoden synchronisiert sind, obwohl die 'mark' Methode nicht ist (was ein bisschen ein Rätsel für mich ist) ... – assylias
Die Lesemethode für den 'BufferedInputStream 'ist' synchronisiert' – Ian2thedv