Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    107

    Dubbio metodi sincronizzati in java

    Ciao a tutti!!!
    Ho un dubbio....e spero che qualcuno sappia chiarire.
    Se io ho un metodo sincronizzato in java e al suo interno chiamo un metodo non sincronizzato, quando entro nel metodo non sincronizzato io perdo il lock a meno che il metodo non sincronizzato lo sincronizzi sullo stesso oggetto del metodo sincronizzato principale. Dico bene oppure sbaglio?????????????
    Grazie a tutti!!!!

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

    Re: Dubbio metodi sincronizzati in java

    Originariamente inviato da Azzurra85
    Ho un dubbio....e spero che qualcuno sappia chiarire.
    Se io ho un metodo sincronizzato in java e al suo interno chiamo un metodo non sincronizzato, quando entro nel metodo non sincronizzato io perdo il lock a meno che il metodo non sincronizzato lo sincronizzi sullo stesso oggetto del metodo sincronizzato principale. Dico bene oppure sbaglio?????????????
    No ... allora .. facciamo un po' di chiarezza.
    La parola chiave synchronized serve per acquisire il lock su un oggetto. Quale oggetto dipende ovviamente da come viene usato, intendo dire se su un metodo di istanza o di classe oppure su un blocco (nel qual caso va specificato l'oggetto).

    Ma a parte questo, una volta acquisito il lock lo si mantiene fino all'uscita del metodo/blocco synchronized!!

    Se dentro un metodo synchronized si invoca un metodo non synchronized, il lock viene mantenuto e questo vale pure se si invoca un altro metodo anch'esso synchronized. Se quest'ultimo metodo è synchronized su un diverso oggetto, allora si acquisirà anche quest'altro lock.
    Se fosse sullo stesso oggetto, non ci sono problemi. La gestione dei lock è "rientrante". Se si cerca di acquisire un lock che già si possiede non c'è alcun inconveniente.

    L'unico metodo che causa il rilascio del lock è la invocazione di wait() sull'oggetto su cui si possiede (e questo è tassativo) il lock.
    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
    Aug 2007
    Messaggi
    107
    Grazie mille per il chiarimento!!!!!!

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.