Nessun motivo particolare. Mi chiedevo se era una cosa fattibile tutto qui!
Nessun motivo particolare. Mi chiedevo se era una cosa fattibile tutto qui!
In generale è bene evitare che lo stesso oggetto di I/O sia usato da più wrapper. Poi per ObjectInputStream sicuramente è da evitare. Il costruttore di ObjectInputStream la prima cosa che fa è leggere l'header della serializzazione (che è una sequenza ben precisa di pochi byte). Se 2 ObjectInputStream cercano di leggerlo dallo stesso stream ...... beh, immagina tu.![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
ma in modo sincronizzato la cosa sarebbe fattibile?
Se gli ObjectInputStream li istanzi entrambi insieme (es. prima di leggere gli oggetti), no non funziona nemmeno tirando in ballo un concetto di sincronizzazione. Il problema è innanzitutto l'header iniziale.
Se chi scrive gli oggetti intende (per qualunque motivo) utilizzare più ObjectOutputStream sullo stesso OutputStream sottostante, tecnicamente può farlo. es.:
codice:<header><oggetti.......> <header><oggetti.......> | ObjectOutputStream 1 | ObjectOutputStream 2 |
Il punto è che dall'altra parte dovresti leggere attentamente solo il primo header+blocco di oggetti. Dovresti cioè trovare un modo per riconoscere che un oggetto è l'ultimo fornito da un ObjectOutputStream e poi dovresti usare un nuovo ObjectInputStream per "ripartire" da capo ovvero dal header e altri N oggetti.
Questo sì, è fattibile. Ma è un pochino fumoso ....![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet