Uhrzeitausgabe

mavinatic

Bekanntes Mitglied
Hallo Community,

ich habe eine konkrete Frage, ich möchte eine Uhr basteln, die mir jede x Sekunden die genaue Uhrzeit ausgibt.

Java:
public class ControlPanel extends JPanel {
	private JButton homeButton = new JButton("menu");
	private JButton clockButton = new JButton();
	 
	
	public ControlPanel() {
		this.setLayout(new BorderLayout());
		this.setBackground(new Color(128,154,255));
		this.setPreferredSize(new Dimension(30,35));
		//JPopUpMenu
		
		Timer timer = new Timer();
		timer.schedule(new TimerTask() {
			public void run() {
				System.out.println(setClock());
			}
		}, 0,30000);
		
		
		homeButton.setPreferredSize(new Dimension(100,50));
		this.add("West",homeButton);
		
		clockButton.setPreferredSize(new Dimension(100,50));
		this.add("East",clockButton);
	}
	
	public String setClock() {
		Date date = new Date();
		int hrs = date.getHours();
		int min = date.getMinutes();
		return hrs+":"+min+" Uhr";
	}
}

Wie man sehen kann initialisiere ich jede 30 Sekunden ein neues Date-Objekt...nun zur meine Frage, bekomme ich irgendwann Memory voll? oder reinigt der GarbageCollector das alte Objekt?
Wie sieht es aus mit dem TimerTask extended der Thread? Also läuft er als eigener Thread?

Gruß

george
 

L-ectron-X

Gesperrter Benutzer
Die Gültigkeit von
Code:
date
endet mit dem Ende der Methode
Code:
setClock()
. Daher wird das alte Objekt vom GC aufgeräumt.
 

Aldimann

Bekanntes Mitglied
Berichtigt mich wenn ich falsch liege und haut mir auf die Finger, aber ich meine gelesen zu haben das man sowas nicht machen soll. Ich meine es wäre in einem der Effective Java Bücher von Bloch gewesen, finde es aber grad auf die schnelle nicht.


Um das ständige neu inizialisieren von date zu vermeiden würde ich Date als Klassenattribut setzen und unten nur noch sowas machen:

Java:
date.setTime(System.currentTimeMillis());

Will mich nicht festlegen ob es nicht noch besser geht, ist aber das einzige was mir spontan eingefallen ist.

Schöne Grüße
 

Neue Themen


Oben