PDA

View Full Version : [JAVA-SERVLET]metodi in lettura di un Hashmap e sincronizzazione


prazision
15-03-2005, 19:58
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:


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(:D ): 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

kingv
15-03-2005, 21:07
Originariamente inviato da prazision
mi può spiegare i che rischi si correrebbero(nel mio caso) qualora i metodi in lettura di Hashmap non fossero sincronizzati.

grazie e ciao


i metodi di HashMap non sono sincronizzati (è una delle differenze con HashTable) ma come hai detto giustamente in questo caso non avresti alcun problema.

Sei sicuro di non abusare di membri e metodi "static" nelle tue classi ? ;)

prazision
15-03-2005, 21:23
Originariamente inviato da kingv
i metodi di HashMap non sono sincronizzati (è una delle differenze con HashTable) ma come hai detto giustamente in questo caso non avresti alcun problema.

Sei sicuro di non abusare di membri e metodi "static" nelle tue classi ? ;)

(speravo di non rompere le palle a te ma cmq)

dunque: i rischi dei metodi static non li ho ancora capiti bene perchè non mi ci sono imbattuto(per cui mi sento ancora libero di usarli :) :) ).
per quanto riguarda i membri(non pensavo che gli oggetti si definissero così) ho capito(e notato) che meno si usano meglio è; cmq in quest'ultima parte del sito in 5 classi che sto usando(tra servlet e classi 'normali') c'è solo un oggetto static.

ti sembra un abuso???

kingv
16-03-2005, 08:27
Originariamente inviato da prazision

dunque: i rischi dei metodi static non li ho ancora capiti bene perchè non mi ci sono imbattuto(per cui mi sento ancora libero di usarli :) :) ).


uhhmmm :incazzed:
:D


per quanto riguarda i membri(non pensavo che gli oggetti si definissero così) ho capito(e notato) che meno si usano meglio è; cmq in quest'ultima parte del sito in 5 classi che sto usando(tra servlet e classi 'normali') c'è solo un oggetto static.

ti sembra un abuso???

i membri sono le variabili che rappresentano gli attributi di una classe.
non sono necessariamente statici, anzi.
i membri (e i metodi) statici meno si usano meglio è, dato che inveitabilmente portano a design "poveri" e poco object-oriented

prazision
16-03-2005, 08:49
:cool: (cmq che non sono necessariamente statici lo sapevo eh :D )

kingv
16-03-2005, 15:28
Originariamente inviato da prazision
(speravo di non rompere le palle a te ma cmq)



dì piuttosto che speravi rispondesse qualcuno che spiegasse un po' meglio di me :D

prazision
16-03-2005, 16:18
a questa non posso risponderti pubblicamente perchè mi vergogno

:cry: :cry: :cry:

pipozzolo
18-03-2005, 16:33
Originariamente inviato da prazision
dunque: i rischi dei metodi static non li ho ancora capiti bene perchè non mi ci sono imbattuto(per cui mi sento ancora libero di usarli :) :))

Argh... ricordo di averti spiegato la questione dei metodi statici qualche mese fa :muro:
Tu non ti applichi!


:incazzed:






:D

prazision
19-03-2005, 07:52
giuro che vado a vedere la discussione
:sofico:

prazision
20-03-2005, 13:13
hai ragione

http://forum.hwupgrade.it/showthread.php?s=&threadid=841702

grazie :)