Non capisco perché mark() e reset() sono sincronizzati e perché read() no?Perché solo il metodo mark() e reset() sono sincronizzati in java.io.InputStream?
risposta
java.io.InputStream è una classe astratta. Ha un'implementazione predefinita per mark/reset che genera un'eccezione al reset che dice che non è supportato in modo che le sottoclassi che non lo supportano non debbano codificare il proprio metodo per lanciare l'eccezione. "sincronizzato" non è utile per il caso predefinito, per generare un'eccezione.
Qualsiasi sottoclasse che lo supporta dovrà sostituire quei metodi e la sincronizzazione non è ereditata, quindi i metodi sovrascritti potrebbero essere sincronizzati o meno.
Penso che non abbia alcun effetto.
Immagino che sia un difetto di progettazione senza conseguenze o forse è un avvertimento in modo che i programmatori lo sottoclassi per sincronizzare anche quei metodi perché dovrebbe essere fatto in quel modo.
- 1. # mark mark mark in Visual Studio per C++?
- 2. Data_wrap_struct e mark function
- 3. Impossibile convertire in modo implicito il tipo 'System.IO.Stream' in 'Java.IO.InputStream'
- 4. I tempi di javascript e css sono sincronizzati?
- 5. Mantenere elasticsearch e database sincronizzati
- 6. JList e JComboBox sincronizzati?
- 7. blocchi sincronizzati e dispatch_async
- 8. Come ottenere il metodo parsley.js reset() per reimpostare il modulo
- 9. Chiamata al metodo Mark che restituisce sempre risultato non nullo
- 10. quali sono le differenze tra std :: move e unique_ptr :: reset?
- 11. Modificatore volatile Java e blocchi sincronizzati
- 12. Metodi sincronizzati in C#
- 13. v8 :: Mark persistente Indipendente, cosa fa esattamente questo metodo?
- 14. Best practice nei metodi sincronizzati in jsf e java
- 15. Git: reset --hard ora sono bloccato in passato
- 16. Perché sovrascrivere il metodo clone in Java
- 17. perché solo 60 fps sono veramente fluidi in cocos2d?
- 18. Rails 5: ActionCable e db non sincronizzati
- 19. Quali sono i metodi di riordino validi per Java sincronizzati?
- 20. Perché il reset YUI CSS non supera la convalida?
- 21. Swift: Understanding // MARK
- 22. Disattivazione transient-mark-mode
- 23. Sostituzione di metodi sincronizzati in Java
- 24. pid_t (e tipi simili) - perché, solo perché?
- 25. Il metodo di override chiama solo il metodo genitore - utile?
- 26. Mark forma non inviate in AngularJS
- 27. Reset scroll in ScrollView
- 28. Thread Java "sincronizzati"
- 29. Perché rake db: migrate: reset non elencato in rake -T?
- 30. #pragma mark equivalent in Android Studio
Presumibilmente perché le corse possono verificarsi tra il segno e il reset, ma non leggere. – aioobe
È un po 'strano considerando che quei metodi non fanno nulla InputStream. Se guardi ByterrayInputStream che supporta mark/reset, vedrai che molti metodi sono sincronizzati, anche se il metodo 'mark' non lo è (che è un po 'un enigma per me) ... – assylias
Il metodo read per' BufferedInputStream 'è' sincronizzato' – Ian2thedv