
import java.io.*;

// Dieses Beispiel summiert mit Threads,  jeweils  1000 Zahlen
// Ergebnis sollte 10000 sein
// Problem:  Gemeinsamer Zugriff auf die Variable summe

// vier Threads, diesmal mit Aufruf start
// 10 * 1,2,3,4  addieren= Summe 100
public class Thread05  {

   private static void pause() {
    try {
      System.in.read();
    }
    catch (IOException e) {
    }
  }  // pause


  private void test1() {
    final int MAX=1000;
    MyThread t1,t2;
    MyThread t3,t4;
    t1 = new MyThread(1,MAX);
    t2 = new MyThread(2,MAX);
    t3 = new MyThread(3,MAX);
    t4 = new MyThread(4,MAX);
    summe = 0;
    t1.start();
    t2.start();
    t3.start();
    t4.start();
    try {
      t2.join();
      t3.join();
      t1.join();
      t4.join();
    }
    catch (InterruptedException e) {
    }    
    System.out.println("Das Ergebnis sollte "+(MAX*10)+" sein");
    System.out.println("***************  Summe: "+Long.toString(summe) );  
  } // start



  public static void main(String[] args) {
    Thread05 frame = new Thread05();
    frame.test1();
    pause();
  }



  long summe=0;

// innere Klasse
class MyThread extends Thread {
  private long nummer=0;
  private int n;

  public void run() {
    for (int i=0; i<n; i++) {
      summe = summe + nummer;
      
    }
  }  // run
  public MyThread (long nr, int n) {
     nummer = nr;
     this.n=n;
  }


 




}





}


