# Thread stoppen?



## Guest (29. Mrz 2008)

Hallo,

wie stoppe ich einen gestarteten Thread?


```
MyThread t = new MyThread();
t.run();
t.stop() // is deprecated sagt er mir
```


----------



## Maeher (29. Mrz 2008)

versuche es mal mit

```
t.interrupt()
```
Dieser Aufruf sollte normalerweiße einen return aus der run()-Methode bewirken. Wenn du diese selbst schreibst empfiehlt es sich in dieser regelmäßig mit isInterrupted() zu prüfen ob sie abbrechen soll.

*Edit:* weitere Varianten gibt es auf Java Thread Primitive Deprecation


----------



## L-ectron-X (29. Mrz 2008)

In deine Threadklasse schreibst du Folgendes:

```
public void run() {
   while(!isInterrupted()) {
      try {
         //was dein Thread tun soll
      }
      catch(InterruptedException e) {
         interrupt();
      }
   }
}
```

Und wenn du deinen Thread anhalten willst:

```
t.interrupt();
```


Achso, und ganz wichtig: Den Thread startest du *nicht* mit 
	
	
	
	





```
t.run();
```
sondern mit:

```
t.start();
```


----------



## Pappenheimer++ (29. Mrz 2008)

Klappt das hier


			
				L-ectron-X hat gesagt.:
			
		

> ```
> try {
> //was dein Thread tun soll
> }
> ...


denn bei allen möglichen Operationen im Try-Block? Sprich: Wird da sofort aus jeder x-beliebigen Operation rausgesprungen oder werden die erst beendet?


----------



## Maeher (29. Mrz 2008)

Es werden nur bestimmte Anweisungen sofort beendet (in der Regel sleep() Anweisungen).
Der Rest wird mit !isInterrupted() in der Schleife abgefangen.


----------

