Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [java]

  1. #1
    Utente di HTML.it L'avatar di userfra
    Registrato dal
    Jul 2001
    Messaggi
    1,418

    [java]

    Ciao a tutti, trovandomi in una situazione di questo tipo(vedi codice), come faccio a mettere assieme il tutto?
    Dato che posso derivarne solo uno?

    codice:
    class Orologio extends Thread{
    private String ora;
    public Orologio(){
    		}
    
    public void run(){
     System.out.print("        ");
        while(true) {
          try {
            System.out.print("\b\b\b\b\b\b\b\b");
            SimpleDateFormat sdf_ora = new   SimpleDateFormat("HH:mm:ss");
            ora = sdf_ora.format(new Date());
            sleep(1000);
            System.out.print(ora);
          } catch(InterruptedException e){}
        }
      }
    }//Chiude class
    
    public class test_2 extends JFrame implements ActionListener{
    -------------------------------------------------
    Il fumo nuoce gravemente alla salute

  2. #2
    Utente di HTML.it L'avatar di userfra
    Registrato dal
    Jul 2001
    Messaggi
    1,418
    ops ho dimenticato di scrivere il titolo, scusate!


    -------------------------------------------------
    Il fumo nuoce gravemente alla salute

  3. #3
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    se per mettere insieme vorresti fare una classe che estenda JFrame e Thread fagli implementare Runnable

  4. #4
    Utente di HTML.it L'avatar di userfra
    Registrato dal
    Jul 2001
    Messaggi
    1,418
    Originariamente inviato da floyd
    se per mettere insieme vorresti fare una classe che estenda JFrame e Thread fagli implementare Runnable

    ahh, ok, solo che in fase di compilazione mi restituisce un errore alla riga contenente questo: sleep(1000);


    perchè?
    -------------------------------------------------
    Il fumo nuoce gravemente alla salute

  5. #5
    Utente di HTML.it L'avatar di userfra
    Registrato dal
    Jul 2001
    Messaggi
    1,418
    Originariamente inviato da userfra
    ahh, ok, solo che in fase di compilazione mi restituisce un errore alla riga contenente questo: sleep(1000);


    perchè?

    perché si blocca vero, infatti ho eliminato sleep e il try/catch e ora funziona, solo che volevo chiedervi, perché funziona ugualmente?
    -------------------------------------------------
    Il fumo nuoce gravemente alla salute

  6. #6
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    public class Esempio implements Runnable {
    public Esempio() {
    Thread t = new Thread(this);
    t.start();
    }
    public void run() {
    // metodo scritto per la classe esempio
    }
    }
    i Runnable si usano in questo modo

  7. #7
    Utente di HTML.it L'avatar di userfra
    Registrato dal
    Jul 2001
    Messaggi
    1,418
    Originariamente inviato da floyd
    public class Esempio implements Runnable {
    public Esempio() {
    Thread t = new Thread(this);
    t.start();
    }
    public void run() {
    // metodo scritto per la classe esempio
    }
    }
    i Runnable si usano in questo modo

    si lo so, infatti io ti avevo chiesto un'altra cosa.
    La mia domanda era rivolta al perché eliminando lo sleep(1000), l'orologio mi funziona lo stesso, rispettando ugualmente il secondo
    -------------------------------------------------
    Il fumo nuoce gravemente alla salute

  8. #8
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    esegue un while infinito senza aspettare, non vedo il probl

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Funziona lo stesso perche' comunque l'ora ti viene fornita con precisione al secondo.
    Nel ciclo viene continuamente richiesta e visualizzata l'ora, se cio' accade (sparo un numero a caso) 100 volte in un secondo, significa che per 100 volte fai il refresh della scritta, con un valore sempre uguale. Passato un secondo, l'ora restituita dal metodo format(new Date()) cambia, per cui cambia quello che tu visualizzi. Tutto questo comporta un grosso spreco di risorse.

    Il metodo sleep e' un metodo statico della classe Thread, per cui per fare il programma come era in origine (decisamente meglio, visto che e' inutile un ciclo while infinito che continua a chiedere l'ora, anche quando non cambia) devi sostituire
    sleep(1000)
    con
    Thread.sleep(1000)

    e il tutto torna a funzionare come prima, in modo piu' corretto
    Ciao,
    Lorenzo

  10. #10
    Utente di HTML.it L'avatar di userfra
    Registrato dal
    Jul 2001
    Messaggi
    1,418
    Originariamente inviato da lelefante
    Funziona lo stesso perche' comunque l'ora ti viene fornita con precisione al secondo.
    Nel ciclo viene continuamente richiesta e visualizzata l'ora, se cio' accade (sparo un numero a caso) 100 volte in un secondo, significa che per 100 volte fai il refresh della scritta, con un valore sempre uguale. Passato un secondo, l'ora restituita dal metodo format(new Date()) cambia, per cui cambia quello che tu visualizzi. Tutto questo comporta un grosso spreco di risorse.

    Il metodo sleep e' un metodo statico della classe Thread, per cui per fare il programma come era in origine (decisamente meglio, visto che e' inutile un ciclo while infinito che continua a chiedere l'ora, anche quando non cambia) devi sostituire
    sleep(1000)
    con
    Thread.sleep(1000)

    e il tutto torna a funzionare come prima, in modo piu' corretto

    Grazie mille a tutti!

    -------------------------------------------------
    Il fumo nuoce gravemente alla salute

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 © 2026 vBulletin Solutions, Inc. All rights reserved.