Sto lavorando a un gioco Android e ho notato che dal momento che onTouchEvent
viene eseguito sul thread dell'interfaccia utente e i metodi di aggiornamento/rendering vengono eseguiti da thread separati, entrambi aggiornano uno ArrayList
che contiene le entità. Quindi, ovviamente, entrano in conflitto se cambiano la lista allo stesso tempo.Modifica da ArrayList a Vector
Ho letto che la classe Vector
viene utilizzata esattamente allo stesso modo di ArrayList
con la sola differenza che Vector
è sincronizzato, in modo che non entrino in conflitto. È vero? in tal caso, ha qualche problema di prestazioni o qualcosa di cui dovrei preoccuparmi? Non ho mai usato la classe Vector
prima.
EDIT: quello che in realtà intendevo era il cambiamento dal
ArrayList<Obj> list = new ArrayList<Obj>();
a
Vector<Obj> list = new Vector<Obj>()
Ma, come dicono le risposte, Vector
non è raccomandato per l'uso. La risposta selezionata ha risolto il mio problema.
'VECTOR' è deprecato, quindi non si dovrebbe usare – BackSlash
Tecnicamente non lo è, ma in realtà si tratta di un antico e in funzione del use case un 'List' dal pacchetto' Concurrent' probabilmente andrà meglio. –
Jon Skeet spiega perché non utilizzare Vector qui: http://stackoverflow.com/q/1386275/1065197 –