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

    Modificare un oggetto synchronized

    Ciao a tutti,

    e' possibile modificare un oggetto mentre sta fungendo da monitor per un blocco synchronized ?

    Per capirci, diciamo : e' corretto avere i due seguenti metodi ?

    codice:
    private static Object object;
    
    public static Object getObject(){ 
          synchronized(object){
                    return object;
          }
    }
    
    public static setObject(Object o){
          synchronized(object){
                  object = o;
          }
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    se metti una sincronizzazione, l'oggetto non sarà disponibile fintanto che il blocco non è terminato, quindi una chiamata ti mette in attesa.
    RTFM Read That F*** Manual!!!

  3. #3
    Scusa non ho capito la tua risposta.
    ho provato ad eseguire il seguente codice ma non si blocca :

    codice:
    public static void main(String a[]){ 
          System.out.println("prima"); 
          setObject(new Object()); 
          System.out.println("dopo"); 
    
    }
    Il mio dubbio era se fosse corretto fare object = o, e quindi cambiare l'area di memoria a cui punta object, mentre esso e' sincronizzato.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    tu prova a mettere dentro il primo blocco una sleep di 30000 (in millisecondi) e prova a fare la seconda istruzione, vedi quando ci entri

    Non è corretto fare un cambio dell'oggetto su cui sincronizzi, il blocco di sincronizzazione non ti rende disponibile l'oggetto per un periodo di tempo ben definito (finché non termina)
    OVvio che sequenzialmente non ti rendi conto di questo
    RTFM Read That F*** Manual!!!

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.