quindi voglio avere un arraylist che memorizza una serie di quotazioni di borsa. ma tengo traccia del prezzo dell'offerta, chiedere il prezzo e l'ultimo prezzo per ciascuno.sincronizzazione delle letture in una raccolta java
ovviamente in qualsiasi momento, l'offerta o l'ultimo di un dato stock può cambiare.
Ho un thread che aggiorna i prezzi e uno che li legge.
Voglio assicurarmi che durante la lettura nessun altro thread stia aggiornando un prezzo. quindi ho guardato la collezione sincronizzata. ma ciò sembra impedire solo la lettura mentre un altro thread aggiunge o elimina una voce all'array.
Così ora sto sul metodo involucro:
public class Qte_List {
private final ArrayList<Qte> the_list;
public void UpdateBid(String p_sym, double p_bid){
synchronized (the_list){
Qte q = Qte.FindBySym(the_list, p_sym);
q.bid=p_bid;}
}
public double ReadBid(String p_sym){
synchronized (the_list){
Qte q = Qte.FindBySym(the_list, p_sym);
return q.bid;}
}
così quello che voglio fare con questo non è che un thread può essere facendo nulla - la lettura o l'aggiornamento di contenuti di un la_lista - in una sola volta. sono vicino a questo giusto?
grazie.
Si sta tentando di impedire che una scrittura su un oggetto Quotazione avvenga contemporaneamente a una lettura? Se è così, bloccare la raccolta non lo farà. Vedi la mia risposta. – DJClayworth