# Threads mit run() und statischer Variable



## schnitzelbank (29. Jun 2009)

hi und zwar hab ich folgende aufgabe:
Schreiben Sie eine Klasse, die sich von Thread ableitet und implementieren Sie die Methode run(). Zählen Sie in der Run-Methode eine statische Variable (int) in einer Schleife hoch und geben Sie sie aus.
a) Erzeugen Sie in der main-Methode eine Instanz der Klasse und starten Sie den Thread
b) Erzeugen Sie eine zweite Instanz der Klasse und starten Sie diese sofort nach der ersten.
c) Wenn Sie die Ausgabe mehrmals starten, ist das Zählen nicht immer ganz sauber, wie kann das passieren?
d) Verändern Sie die Wahrscheinlichkeit der Unglücke, indem Sie zwischen dem Hochzählen und der Ausgabe zufällig den Thread zwischen 0 und 1 Sekunde Schlafen schicken. Benennen Sie die Threads mit setName() und geben Sie in der run-Methode den Namen mit aus.


Meine frage dazu, habe ich das richtig gemacht?könnte das jemand überprüfen, bin mir nicht ganz sicher? 


```
public class LALA extends Thread {


   static int zahl = 1
   ;

   public static void main(String[] args)
   {
      Thread t1 = new LALA();
      t1.setName("                bin der Erste");
      Thread t2 = new LALA();
      t2.setName("                bin der Zweite");
      t1.start();
      t2.start();
   }
   public void run(){
   for(;zahl < 100; ++zahl) {
              try {
                      sleep((int)(Math.random()*1000));
              }
              catch(InterruptedException e) {
              }
             System.out.println(zahl+ getName());
            }
          }
        }
```


----------



## Noctarius (29. Jun 2009)

Ich würde jetzt spontan sagen da fehlt Synchronisation. Immerhin zählen 2 Threads die selbe Variable mit zeitgleicher Ausführung.


----------



## schnitzelbank (29. Jun 2009)

ja aber da steht ja nichts von in der aufgabenstellung, oder hab ich das übersehn..


----------



## Schandro (29. Jun 2009)

außer das du den ersten Thread laut Aufgabenstellung starten sollst bevor du den zweiten erschaffst, dürfte dein Code richtig sein.

@Noctarius:
Die Threads sollen garnicht synchronisiert laufen^^


----------



## schnitzelbank (29. Jun 2009)

ja ok..naja ich denk die aufgabenstellung is einwenig doof, den bei b steht, starten sie den 2ten sofort nach dem ersten


----------



## Noctarius (30. Jun 2009)

Schandro hat gesagt.:


> @Noctarius:
> Die Threads sollen garnicht synchronisiert laufen^^



Zuviel Gameserver-Programmierung, Synchronisationsfehler springen mir schon fast ins Gesicht wenn ich die sehe *gg*


----------

