# Thread in Methode oder in inner class



## Generic1 (29. Jan 2010)

Hallo,

was zieht ihr von unten vor und warum. eingentlich ist es ja gleichwertig meiner Meinung nach, oder sehe ich das falsch?

Thread in Methode:

```
public class Test {

    private void startThread() {
      new Thread() {
          ....
         }
      }

}
```

oder eine innere Klasse:

```
public class Test {
 
     private final class MyThread extends Thread {
         ...
         }

    }
```


----------



## Firestorm87 (29. Jan 2010)

Jein 
Eine eigene Klasse macht insbesondere dann sinn, wenn man diesen Thread mehrmals benötigt, oder er so komplex wird, dass man damit übersichtlichkeit schafft...

Für kleine übersichtliche Threads, die wirklich nur dieses eine mal benötigt werden, kann man auch mal eine anonyme instanz verwenden...

Ich persönlich schreibe eigentlich meistens eine eingene Klasse.... so ist der Code relativ sauber.


----------



## Janus (29. Jan 2010)

Wenn es gleichwertig genutzt werden kann, solltest du eine anonyme Klasse verwenden. Für einen Fremdleser ist somit sofort ersichtlich, was geschieht und welchen Scope der Thread hat. Bei einer inneren Klasse muss er sich evtl. noch die Verwendung etc. angucken.


----------



## SlaterB (29. Jan 2010)

speziell bei Threads ist es zudem zu überlegen, nur eine Runnable-Klasse zu erstellen 
und diese an ein normales Thread-Objekt zu übergeben,


```
Runnable r = new Runnable() {

}
new Thread(r).start();
```

Runnable ist eh nur ein Interface, da stören neue Klassen wenig, 
Thread zu extenden hat eine etwas andere Qualität, ist eine wichtige Klasse, man könnte Methoden falsch überschreiben usw...


----------

