andbin
14-12-2006, 17:03
Ho una classe che ho sviluppato io, è una specie di collezione particolare, al suo interno utilizza 2 HashMap. Nessuno dei metodi che ho creato è marcato synchronized, quindi così com'è non è adatta per un uso "concorrente".
Vorrei dare la possibilità di ottenere una versione synchronized della mia classe. Quale è la soluzione migliore??
Io ho pensato questo: nella classe metto una classe innestata 'static' che estende la classe. In questa classe innestata faccio l'override di ogni metodo marcandolo synchronized e facendo in modo che chiami semplicemente super.metodo(...). Poi metto un metodo nella mia classe che ritorna una istanza della classe synchronized.
Vi sembra una buona idea? Altre possibili soluzioni?
Sono anche andato a vedere il sorgente della classe java.util.Collections e ho visto che per ottenere una collezione synchronized fa in un altro modo: ha una classe innestata 'static' che incapsula una Collection e un Object che fa da mutex. Ogni metodo definito fa il synchronized sul mutex e chiama il relativo metodo.
Grazie in anticipo.
Vorrei dare la possibilità di ottenere una versione synchronized della mia classe. Quale è la soluzione migliore??
Io ho pensato questo: nella classe metto una classe innestata 'static' che estende la classe. In questa classe innestata faccio l'override di ogni metodo marcandolo synchronized e facendo in modo che chiami semplicemente super.metodo(...). Poi metto un metodo nella mia classe che ritorna una istanza della classe synchronized.
Vi sembra una buona idea? Altre possibili soluzioni?
Sono anche andato a vedere il sorgente della classe java.util.Collections e ho visto che per ottenere una collezione synchronized fa in un altro modo: ha una classe innestata 'static' che incapsula una Collection e un Object che fa da mutex. Ogni metodo definito fa il synchronized sul mutex e chiama il relativo metodo.
Grazie in anticipo.