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

    Evento cambio di variabile

    Ciao a tutti!
    Volevo sapere quale evento devo usare per sapere quando cambia il contenuto di una variabile... un pò come il semaforo... io uso un ciclo che controlla sempre la variabile, solo che il ciclo prende metà della CPU e quindi prestazionalmente fa ca**re!!

    Grazie per l'aiuto!!

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

    Re: Evento cambio di variabile

    Originariamente inviato da Eragorn87
    Volevo sapere quale evento devo usare per sapere quando cambia il contenuto di una variabile...
    Direttamente su una variabile no, non puoi! Puoi fare in modo che l'unico modo per impostare una variabile sia quello di invocare un apposito metodo "setter" e a quel punto .... fai quello che vuoi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Eragorn87
    Esempio??
    codice:
    class Pippo
    {
        private int num;
    
        public void setNum (int num)
        {
            this.num = num;
            // .... notifica anche chi/come ti pare e piace ....
        }
    }
    Dall'esterno l'unico modo per impostare la variabile è quello di invocare setNum().

    Per quanto riguarda la notifica bisogna poi vedere a chi e a quanti devi inviare la notifica. Se a 1 solo, ti basta definire una tua interfaccia e fare in modo che la tua classe abbia un reference ad un oggetto che implementa tale interfaccia. Quando devi inviare la notifica, invochi un metodo di questa interfaccia.
    Altrimenti se devi inviare la notifica a più di 1 oggetto, allora puoi sfruttare gli stessi concetti e classi usate anche dai listener per i componenti Swing.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Allora, ho una classe che crea un immagine... appena ha finito di crearla deve richiamare un altra classe che modifica quell'immagine... ( ma mentre la classe chiamata modifica l'immagine l'altra deve stare ferma... deve aspettare che la classe abbia finito di modificare ) finito di modificare... manda un ok al "padre" ( anche se non lo è ) dicendogli che può ricreare un altra immagine... capito??

    Io voglio che una rimane ferma e l'altra lavori!!

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Eragorn87
    Allora, ho una classe che crea un immagine... appena ha finito di crearla deve richiamare un altra classe che modifica quell'immagine... ( ma mentre la classe chiamata modifica l'immagine l'altra deve stare ferma... deve aspettare che la classe abbia finito di modificare ) finito di modificare... manda un ok al "padre" ( anche se non lo è ) dicendogli che può ricreare un altra immagine... capito??

    Io voglio che una rimane ferma e l'altra lavori!!
    E allora cosa centra la notifica del cambiamento di una variabile??? Nulla. Spieghiamoci bene ... please!

    La questione qui è solo quella di stabilire se il "produttore" e il "consumatore" sono su 2 thread differenti oppure no.

    Se non ci sono questioni di thread, una cosa banalissima è invocare un metodo dell'altra classe, che ovviamente è sincrono, cioè ritorna solo quando il metodo ha finito. Se non è così (altrimenti sarebbe una banalità), allora bisogna valutare meglio la questione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Allora, inizia il programma,
    viene subito chiamata dal programma una classe che crea il file!
    Finito di creare,
    parte un altra classe che modifica il file, intanto però la classe che crea controlla se il file è stato modificato ( facendo un ciclo di controllo )
    Finito di modificare la classe che crea esce dal controllo e ricrea il file
    Ricreato il file, la classe che modifica ( sempre grazie ad un ciclo che controlla se il file è stato creato ) riparte!! Diciamo che i thread si trovano solo all'interno delle classi! Queste classi vengono lanciate e basta sensa gestire il processo... non so se mi sono spiegato...

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Eragorn87
    Allora, inizia il programma,
    viene subito chiamata dal programma una classe che crea il file!
    Finito di creare,
    parte un altra classe che modifica il file, intanto però la classe che crea controlla se il file è stato modificato ( facendo un ciclo di controllo )
    Finito di modificare la classe che crea esce dal controllo e ricrea il file
    Ricreato il file, la classe che modifica ( sempre grazie ad un ciclo che controlla se il file è stato creato ) riparte!! Diciamo che i thread si trovano solo all'interno delle classi! Queste classi vengono lanciate e basta sensa gestire il processo... non so se mi sono spiegato...
    No, non ti sei spiegato!!
    Ma che stai dicendo!!? Che senso ha dire: "Diciamo che i thread si trovano solo all'interno delle classi"???? E "Queste classi vengono lanciate e basta sensa gestire il processo"???

    Sorry ma così l'unica cosa che si capisce è che non ti sono chari classi, oggetti e thread.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Forse hai ragione...

    cerco di spiegarmi meglio....

    Classe principale con MAIN "Pippo"

    Pippo crea la classe Pluto ( Pluto punt = new Pluto() )

    la classe Pluto gira... appena ha concluso manda una variabile a Pippo che con un thread la controlla... se la variabile è esatta crea Topolino ( Topolino punt = new Topolino () )

    Il thread di Pippo smette di girare perchè Topolino è stato creato e non deve più essere ricreato

    Topolino fa quello che deve fare e appena ha finito dovrebbe far capire a Pluto che deve rigirare... ora io ho creato una classe Semaforo, ma il problema è che per controllare la variabile che sta dentro la classe Semaforo faccio un ciclo che intasa la CPU io non voglio fare questo ciclo... voglio ho creare un thread che gestisce la cosa o semplicemente avere qualcosa che capisce che la variabile è cambiata...

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.