Devo gestire delle collezioni di oggetti in un sistema Client-Server. Per farlo ho pensato di utilizzare dei Vector che sono già sincronizzati.
Ora, il mio dubbio è proprio sulla sincronizzazione: da quello che avevo capito dallo studio se all'interno di una classe sono dichiarati dei metodi synchronized essi saranno mutualmente esclusi tra di loro cioè una volta che viene acquisito da un oggetto il lock dovuto al synchronized del metodo nessun altro metodo potrà esere invocato da nessun oggetto. E' così anche per i vector?
In parole povere: le operazioni eseguite da thread differenti su Vector di oggetti diversi (e potenzialmente chiamati da metodi di classi diverse) sono mutualmente escluse?
Chiedendo anche con il codice:
codice://THREAD1 esegue Vector<Oggetto1> es1= new Vector<Oggetto1>(); es1.add(Oggetto1); //THREAD2 esegue Vector<Oggetto2> es2= new Vector<Oggetto2>(); es2.add(Oggetto2); //il thread2 deve aspettare che l'operazione di //add venga eseguita o l'esecuzione di queste due //operazioni avviene "simultaneamente"?

Rispondi quotando