Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    143

    [JAVA] pattern Singleton e synchronized

    Ciao, in un ambiente multithreading, è tassativo mettere tutti i metodi della classe che realizza il pattern Singleton come synchronized oppure basta solo l'unico metodo che può usare il costruttore?
    Per esempio una classe che gestisce l'accesso ad una base di dati, il metodo che mi fa il return dell'istanza private static della classe lo metto synchronized, ma per esempio anche la close() dovrà esserlo, e in generale tutti i metodi?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] pattern Singleton e synchronized

    Originariamente inviato da namek
    Ciao, in un ambiente multithreading, è tassativo mettere tutti i metodi della classe che realizza il pattern Singleton come synchronized oppure basta solo l'unico metodo che può usare il costruttore?
    Per esempio una classe che gestisce l'accesso ad una base di dati, il metodo che mi fa il return dell'istanza private static della classe lo metto synchronized, ma per esempio anche la close() dovrà esserlo, e in generale tutti i metodi?
    Dipende da quale è e cosa fa l'oggetto "singleton"!

    Per quanto riguarda il pattern singleton e il multithreading, l'accesso in modo concorrente è da vedere sotto due punti di vista:

    - L'accesso concorrente per ottenere la istanza dell'oggetto singleton.
    - L'accesso concorrente per eseguire i vari metodi sull'oggetto singleton.

    Nel primo caso bisogna vedere se la istanziazione dell'oggetto è fatta in modo "lazy" (alla prima richiesta) o se fatta in ogni caso a priori, prima di ogni richiesta. Se in modo lazy la sincronizzazione ci vuole eccome.

    Nel secondo caso valgono le regole, in generale, per la sincronizzazione. Che fa il tuo oggetto di preciso? È chiaro che la concorrenza dovrà essere debitamente gestita in modo opportuno.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    143
    Ciao, l'istanziazione è in modo lazy, infatti ho messo synchronized.
    Per quanto riguarda le altre operazioni, accedo al database tramite questa classe, che in poche parole fa connetti e disconnetti.
    Da come mi dici tu però adesso mi sorgono ulteriori dubbi:
    la classe che usa questa classe che connette/disconnette, fa delle query di update e letture varie, dovrò mettere synchronized pure in quella?
    Grazie

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.