Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    153

    [Multi-Thread] leggere HashMap

    Salve a tutti!

    il mio dubbio forse è dovuto ad un po di confusione dovuta all'overdose di codice che ho fatto oggi..

    Ho una classe che gestisce una HashMap.
    Questo oggetto è condiviso da "N" thread, i quali possono chiamare i metodi di put, remove, e, metodi di lettura, che dopo piccole operazioni di contorno eseguono l'equivalente sulla HashMap.

    La concorreza impone impone di "Sincronizzare" l'accesso a tali metodi.

    Il mio dubbio e su oprezaioni del tipo
    codice:
    containsKey(key)
    get(key)
    Sono operazioni di lettura che non sono sicuro ci sia la necessità di sincronizzare..
    codice:
    public MyClass(){
        private HashMap map = new HashMap();
    
        public synchronized void removeKey(String key){
            map.remove(key);
        }
     
        public synchronized void addElem(String key, String elem){
            if(!map.containsKey(key))
                   map.put(elem);
        }
    
       oppure:
        public void addElem(String key, String elem){
            if(!map.containsKey(key))
                 syncronized(this){
                     map.put(elem);
                  }
               }
    }
    Nel secondo caso, sincronizzo solo il "put" mntre permetto a tutti l'esecuzione di containsKey()...

  2. #2

    Re: [Multi-Thread] leggere HashMap

    Originariamente inviato da absolom
    Salve a tutti!

    il mio dubbio forse è dovuto ad un po di confusione dovuta all'overdose di codice che ho fatto oggi..

    Ho una classe che gestisce una HashMap.
    Questo oggetto è condiviso da "N" thread, i quali possono chiamare i metodi di put, remove, e, metodi di lettura, che dopo piccole operazioni di contorno eseguono l'equivalente sulla HashMap.

    La concorreza impone impone di "Sincronizzare" l'accesso a tali metodi.
    Se stai sviluppando con Java 5, puoi usare direttamente java.util.concurrent.ConcurrentHashMap.

  3. #3
    Non sapevo della ConcurrentHashMap. Comunque sia la sincronizzazione serve sicuramente anche sui metodi di sola lettura.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.