---
title: 'Inselupdate: Lokale und innere anonyme Klasse für einen Timer nutzen'
url: 'https://tutego.de/blog/javainsel/2012/07/inselupdate-lokale-und-innere-anonyme-klasse-fr-einen-timer-nutzen'
markdown: 'https://tutego.de/blog/javainsel/2012/07/inselupdate-lokale-und-innere-anonyme-klasse-fr-einen-timer-nutzen.md'
date: '2012-07-27'
description: 'Lokale Klasse für einen Timer nutzen Damit die Beispiele etwas praxisnäher werden, wollen wir uns anschauen, wie ein Timer wiederholende Aufgaben ausführen kann. Die Java-Bibliothek bringt hier schon alles mit: Es gilt ein Exemplar von java.util.Timer() zu bilden und der Objektmethode scheduleAtFix…'
taxonomy:
  category:
    - Allgemein
---

# Inselupdate: Lokale und innere anonyme Klasse für einen Timer nutzen

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://tutego.de/blog/javainsel/)

## Inselupdate: Lokale und innere anonyme Klasse für einen Timer nutzen

27.07.2012 · [Christian Ullenboom](https://tutego.de/blog/javainsel/author/admin/)

**Lokale Klasse für einen Timer nutzen**

Damit die Beispiele etwas praxisnäher werden, wollen wir uns anschauen, wie ein Timer wiederholende Aufgaben ausführen kann. Die Java-Bibliothek bringt hier schon alles mit: Es gilt ein Exemplar von `java.util.Timer`() zu bilden und der Objektmethode `scheduleAtFixedRate(…)` ein Exemplar vom Typ TimerTask zu übergeben. Die Klasse TimerTask schreibt eine abstrakte Methode `run()` vor, in die der parallel und regelmäßig abzuarbeitende Programmcode gesetzt wird.

Nutzen wir das für ein Programm, welches uns sofort und regelmäßig daran erinnert, wie wichtig doch Sport ist:

```java
public class SportReminder {

 public static void main( String[] args ) {

 class SportReminderTask extends TimerTask {

 @Override public void run() {

 System.out.println( "Los, beweg dich du faule Wurst!" );

 }

 }

 new Timer().scheduleAtFixedRate( new SportReminderTask(), 0 /* ms delay */, 1000 /* ms period */ );

 }

}
```

Unser Klasse `SportReminderTask`, die TimerTask erweitert, ist direkt in `main(…)` deklariert. Das erzeugte Exemplar kommt später in `scheduleAtFixedRate(…)` und los rennt der Timer, um uns jede Sekunde an die Wichtigkeit von Bewegung zu erinnern.

**Nutzung einer anonymen innerer Klassen für den Timer**

Eben gerade haben wir für den Timer extra eine neue lokale Klasse deklariert, aber genau genommen haben wir diese nur einmal nutzen müssen, nämlich um ein Exemplar bilden, und `scheduleAtFixedRate(…)` übergeben zu können. Das ist ein perfektes Szenario für anonyme innere Klassen. Aus

```java
class SportReminderTask extends TimerTask {

 @Override public void run() { ... }

}

new Timer().scheduleAtFixedRate( new SportReminderTask(), ... );
```

wird

```java
new Timer().scheduleAtFixedRate( new TimerTask() {

 @Override public void run() {

 System.out.println( "Los, ..." );

 }
```

},

0 /\* ms delay \*/,

```java
1000 /* ms period */);
```

Im Kern ist es also eine Umwandlung von new `SportReminderTask`() in new TimerTask() { … }. Von dem Klassennamen `SportReminderTask` ist nichts mehr zu sehen, das Objekt ist anonym.

Kategorien: [Allgemein](https://tutego.de/blog/javainsel/category/allgemein/)

[← Alle Beiträge](https://tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Inselupdate: Methode mit variabler Argumentanzahl (Vararg)](https://tutego.de/blog/javainsel/2012/07/inselupdate-methode-mit-variabler-argumentanzahl-vararg.md)
- Next: [Inselupdate: Konstruktoren der Formatter Klasse](https://tutego.de/blog/javainsel/2012/07/inselupdate-konstruktoren-der-formatter-klasse.md)
