Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [JAVA-SERVLET]metodi in lettura di un Hashmap e sincronizzazione

    dunque ho una servlet che parte all'avvio di tomcat e che tramite una
    classe java Esempio.java inizializza un Hashmap dichiarata statica(all'interno della classe java) con dei valori.
    tramite la stessa classe java da varie servlet e jsp si ricavano i valori
    "stivati" nella Hashmap con un metodo così fatto:

    codice:
    public static String getPagina(String parametro)
    { 
       String pagina = (String)parametriPagine.get(parametro);
       return pagina;
    }
    ecco, inizialmente ero preoccupato sul fatto che i metodi della classe Hashmap fossero +o- sincronizzati ma poi ho pensato( ): la mia classe puo' solo leggere dalla Hashmap ma non puo' modificarla in nessuna maniera.
    è inutile pertanto porsi il problema di sapere se i metodi sono sincronizzati(che cmq lo sono) perchè qualora arrivassero 2 richieste contemporanee alla classe java di leggere dalla hashmap, queste 2 richieste non potrebbero in nessun modo interferire tra di loro.

    spero di non aver pensato la solita c*****; in caso contrario qualcuno mi può spiegare i che rischi si correrebbero(nel mio caso) qualora i metodi in lettura di Hashmap non fossero sincronizzati.

    grazie e ciao

  2. #2
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Potresti avere delle letture dei dati dell'HashMap prima che il thread che si occupa di scrivere l'HashMap riesca ad aggiornare il che comporterebbe un disallineamento tra i dati letti e quelli effettivamente scritti. In tutti i modi l'HashMap di fatto non è sincronizzato.... per metterti al sicuro puoi fare una cosa del tipo (supponendo che il tuo HashMap valorizzato sia chiamato theMap):


    codice:
    Map synchMap = Collections.synchronizedMap(theMap);
    Poi vai ad interagire con synchMap... ciao
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  3. #3
    intanto grazie
    angelo ma la mia classe puo' solo leggere dalla Hashmap ma non puo' modificarla in nessuna maniera

    la scrittura avviene tramite una servlet che parte all'avvio di tomcat e stop

  4. #4
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Ok allora non corri rischi... Ciao
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  5. #5

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 © 2024 vBulletin Solutions, Inc. All rights reserved.