Threads

1 Der Bauernhof

 

1.1                  Hauptprogramm Bauernhof

 

class bauernhof

{

 

   public static void main (String[] args)

   {

      Hund h = new Hund();

      Katze m = new Katze();

      Schaf s = new Schaf();

      Kuh k = new Kuh();

 

      h.start();

      m.start();

      s.start();

      k.start();

 

   }

}

 

1.2 Der Hund

 

class Hund extends Thread

{

      public void run()

      {

         while (true)

         {

             System.out.println("wauwau");

             try

             {

                this.sleep(200);

             }

             catch(InterruptedException e)

             {

                System.out.println(e.getMessage());

             }

         }

     }

}

 

1.2   Die Katze

 

class Katze extends Thread

{

      public void run()

      {

         while (true)

         {

             System.out.println("miauuuu");

 

             try

             {

                this.sleep(500);

             }

             catch(InterruptedException e)

             {

                System.out.println(e.getMessage());

             }

         }

     }

}

 

1.3   Das Schaaf

 

class Schaf extends Thread

{

      public void run()

      {

         while (true)

         {

             System.out.println("määhhhh");

 

             try

             {

                this.sleep(1000);

             }

             catch(InterruptedException e)

             {

                System.out.println(e.getMessage());

             }

         }

     }

}

 

1.4   Die Kuh

 

class Kuh extends Thread

{

      public void run()

      {

         while (true)

         {

             System.out.println("muuuhhh");

 

             try

             {

                this.sleep(500);

             }

             catch(InterruptedException e)

             {

                System.out.println(e.getMessage());

             }

         }

     }

}

 

Die tierischen Objekte werden alle in separaten Klassen abgelegt und mit dem Hauptprogramm aufgerufen.

 

 

2 Der Bauernhof mit

 

2.1 Das Hauptprogramm

 

class bauernhof

{

 

   public static void main (String[] args)

   {

      Hund h = new Hund();

      Katze m = new Katze();

      Schaf s = new Schaf();

      Kuh k = new Kuh();

 

      k.setWartezeit(100);

 

      Thread hundThread = new Thread(h);

      Thread katzeThread = new Thread(m);

      Thread schafThread = new Thread(s);

      Thread kuhThread = new Thread(k);

 

      hundThread.start();

      katzeThread.start();

      schafThread.start();

      kuhThread.start();

 

      try

      {

        Thread.sleep(3000);

      }

      catch(InterruptedException e)

      {

          System.out.println(e.getMessage());

      }

 

      k.setWartezeit(8000);

 

         try

      {

        Thread.sleep(3000);

      }

      catch(InterruptedException e)

      {

          System.out.println(e.getMessage());

      }

 

      m.setWartezeit(40);

 

   }

 

}

 

2.2 Die Haustiere

 

abstract class Haustier implements Runnable

{

 

      abstract String getLaut();

 

      int wartezeit = 1000;

 

      void setWartezeit(int wZeit)

      {

          wartezeit = wZeit;

      }

 

      public void run()

      {

         while (true)

         {

             System.out.println(getLaut());

 

             try

             {

                Thread.sleep(wartezeit);

             }

             catch(InterruptedException e)

             {

                System.out.println(e.getMessage());

             }

         }

     }

}

 

2.3 Der Hund

 

class Hund extends Thread

{

      public void run()

      {

         while (true)

         {

             System.out.println("wauwau");

             try

             {

                this.sleep(200);

             }

             catch(InterruptedException e)

             {

                System.out.println(e.getMessage());

             }

         }

     }

}

2.4 Die Katze

 

class Katze extends Thread

{

      public void run()

      {

         while (true)

         {

             System.out.println("miauuuu");

 

             try

             {

                this.sleep(500);

             }

             catch(InterruptedException e)

             {

                System.out.println(e.getMessage());

             }

         }

     }

}

 

2.4 Das Schaaf

 

class Schaf extends Thread

{

      public void run()

      {

         while (true)

         {

             System.out.println("määhhhh");

 

             try

             {

                this.sleep(1000);

             }

             catch(InterruptedException e)

             {

                System.out.println(e.getMessage());

             }

         }

     }

}

 

2.5 Die Kuh

 

class Kuh extends Thread

{

      public void run()

      {

         while (true)

         {

             System.out.println("muuuhhh");

 

             try

             {

                this.sleep(500);

             }

             catch(InterruptedException e)

             {

                System.out.println(e.getMessage());

             }

         }

     }

}

 

 

3 Der Bauernhof mit Schafen und Kuh

 

3.1 Bauernhof

 

class bauernhof

{

 

   public static void main (String[] args)

   {

 

      Schaf s = new Schaf();

      Kuh k = new Kuh();

 

      Thread schafThread = new Thread(s);

      Thread kuhThread = new Thread(k);

 

      schafThread.start();

      kuhThread.start();

 

   }

 

}

3.2 Haustiere

 

abstract class Haustier implements Runnable

{

 

 

      static int boxNummer = 0;

 

      String viehName;

 

      semaphor sem;

 

      abstract void einlesen();

 /*

      void setWartezeit(int wZeit)

      {

          wartezeit = wZeit;

      }

 */

 

      public void run()

      {

          einlesen();

      }

}

 

3.3 Die Kuh

 

import java.io.*;

 

class Kuh extends Haustier implements Runnable

{

 

 

   void einlesen()

   {

        int aktBoxNummer = boxNummer;

               System.out.println("Generiere Kuh für " + aktBoxNummer);

 

             try

             {

                Thread.sleep(15000);

             }

             catch(InterruptedException e)

             {

                System.out.println(e.getMessage());

             }

 

        // char zeich = ' ';

 

       System.out.println("*** Bitte KUH für die Box " + aktBoxNummer + " eingeben");

 

 

       try

       {

           BufferedReader din = new BufferedReader(new InputStreamReader(System.in));

           viehName = din.readLine();

 

 

       //    zeich = (char) System.in.readLine();

       }

           catch(IOException e)

       {

          System.out.println(e.getMessage());

       }

 

 

       System.out.println("-- Kuh " + viehName + " wurde Box " + aktBoxNummer + " zugeteilt\n");

       boxNummer++;

       System.out.println("In Kuh weitergezählt");

       einlesen();

     }

}

 

3.4 Das Schaf

 

import java.io.*;

 

class Schaf extends Haustier implements Runnable

{

 

 

   void einlesen()

   {

       int aktBoxNummer = boxNummer;

 

       System.out.println("Generiere Schaf für " + aktBoxNummer);

 

 

              try

             {

                Thread.sleep(7000);

             }

             catch(InterruptedException e)

             {

                System.out.println(e.getMessage());

             }

 

        // char zeich = ' ';

 

       System.out.println("*** Bitte SCHAF für die Box " + aktBoxNummer + " eingeben");

 

       try

       {

           BufferedReader din = new BufferedReader(new InputStreamReader(System.in));

           viehName = din.readLine();

 

       //    zeich = (char) System.in.readLine();

       }

           catch(IOException e)

       {

          System.out.println(e.getMessage());

       }

 

 

       System.out.println("-- Schaf " + viehName + " wurde Box " + aktBoxNummer + " zugeteilt\n");

 

          try         {

         Thread.sleep(12000);

         }

            catch(InterruptedException e)           {

            System.out.println(e.getMessage());

         }

       boxNummer++;

       System.out.println("In Schaf weitergezählt");

       einlesen();

     }

}

 

 

4. Bauernhof

 

4.1 Bauernhof

 

 

class bauernhof

{

 

   public static void main (String[] args)

   {

 

      Schaf s = new Schaf();

      Kuh k = new Kuh();

 

      Thread schafThread = new Thread(s);

      Thread kuhThread = new Thread(k);

 

 

      kuhThread.start();

      schafThread.start();

 

   }

}

4.2 Haustiere

 

abstract class Haustier implements Runnable

{

 

 

      static int boxNummer = 0;

 

      String viehName;

 

      static int  sem = 0;    // semaphor

 

      abstract void einlesen();

 /*

      void setWartezeit(int wZeit)

      {

          wartezeit = wZeit;

      }

 */

 

      public void run()

      {

          einlesen();

      }

}

 

4.3 Kuh

 

import java.io.*;

 

class Kuh extends Haustier implements Runnable

{

   void einlesen()

   {

       while (sem != 0) //semaphor gesetzt - anderer Prozess aktiv

       {

          try

          {

             Thread.sleep(1000);

          }

          catch(InterruptedException e)

          {

             System.out.println(e.getMessage());

          }

       }

 

       sem = 1; // semaphor wird gesetzt

 

        int aktBoxNummer = boxNummer;

        System.out.println("Generiere Kuh für " + aktBoxNummer);

 

             try

             {

                Thread.sleep(1000);

             }

             catch(InterruptedException e)

             {

                System.out.println(e.getMessage());

             }

 

        // char zeich = ' ';

 

       System.out.println("*** Bitte KUH für die Box " + aktBoxNummer + " eingeben");

 

       try

       {

           BufferedReader din = new BufferedReader(new InputStreamReader(System.in));

           viehName = din.readLine();

 

       //    zeich = (char) System.in.readLine();

       }

           catch(IOException e)

       {

          System.out.println(e.getMessage());

       }

 

       System.out.println("-- Kuh " + viehName + " wurde Box " + aktBoxNummer + " zugeteilt\n");

       boxNummer++;

       System.out.println("In Kuh weitergezählt");

 

       sem=0; // Semaphor wird zurueckgenommen

 

         try

         {

         Thread.sleep(4000); // Pause: Andere Prozesse sollen auch rein können

         }

            catch(InterruptedException e)

         {

            System.out.println(e.getMessage());

         }      

einlesen();   

}

4.4 Schaf

 

import java.io.*;

 

class Schaf extends Haustier implements Runnable

{

   void einlesen()

   {

       while (sem != 0) //semaphor gesetzt - anderer Prozess aktiv

       {

          try

          {

             Thread.sleep(1000);

          }

          catch(InterruptedException e)

          {

             System.out.println(e.getMessage());

          }

       }

       sem = 1; // semaphor wird gesetzt

 

        int aktBoxNummer = boxNummer;

        System.out.println("Generiere Schaf für " + aktBoxNummer);

 

             try

             {

                Thread.sleep(1000);

             }

             catch(InterruptedException e)

             {

                System.out.println(e.getMessage());

             }

        // char zeich = ' ';

 

       System.out.println("*** Bitte Schaf für die Box " + aktBoxNummer + " eingeben");

       try

       {

           BufferedReader din = new BufferedReader(new InputStreamReader(System.in));

           viehName = din.readLine();

 

 

       //    zeich = (char) System.in.readLine();

       }

           catch(IOException e)

       {

          System.out.println(e.getMessage());

       }

 

 

       System.out.println("-- Schaf " + viehName + " wurde Box " + aktBoxNummer + " zugeteilt\n");

       boxNummer++;

       System.out.println("In Schaf weitergezählt");

 

       sem=0; // Semaphor wird zurueckgenommen

 

         try

         {

         Thread.sleep(4000); // Pause: Andere Prozesse sollen auch rein können

         }

            catch(InterruptedException e)

         {

            System.out.println(e.getMessage());

         }

       einlesen(); 

 }

 

 

5. Bauernhof

5.1 Bauernhof

 

class bauernhof

{

 

   public static void main (String[] args)

   {

 

      Schaf s = new Schaf();

      Kuh k = new Kuh();

 

      Thread schafThread = new Thread(s);

      Thread kuhThread = new Thread(k);

 

 

      kuhThread.start();

      schafThread.start();

 

   }

}

 

5.2 Haustiere

 

import java.io.*;

abstract class Haustier implements Runnable

{

      static int boxNummer = 0;

      String viehName;

      static int  sem = 0;    // semaphor

      abstract void einlesen();

 /*

      void setWartezeit(int wZeit)

      {

          wartezeit = wZeit;

      }

 */

    void einlesen(String tierart, int wartezeit)

   {

       while (sem != 0) //semaphor gesetzt - anderer Prozess aktiv

       {

          try

          {

             Thread.sleep(500);

          }

          catch(InterruptedException e)

          {

             System.out.println(e.getMessage());

          }

       }

       sem = 1; // semaphor wird gesetzt

 

        int aktBoxNummer = boxNummer;

        System.out.println("Generiere " + tierart + " für " + aktBoxNummer);

 

             try

             {

                Thread.sleep(700);

             }

             catch(InterruptedException e)

             {

                System.out.println(e.getMessage());

             }

        // char zeich = ' ';

       System.out.println("*** Bitte " + tierart + " für die Box " + aktBoxNummer + " eingeben");

       try

       {

           BufferedReader din = new BufferedReader(new InputStreamReader(System.in));

           viehName = din.readLine();

       //    zeich = (char) System.in.readLine();

       }

           catch(IOException e)

       {

          System.out.println(e.getMessage());

       }

       System.out.println("-- " + tierart + " "  + viehName + " wurde Box " + aktBoxNummer + " zugeteilt\n");

       boxNummer++;

       System.out.println("In "+ tierart + " weitergezählt");

 

       sem=0; // Semaphor wird zurueckgenommen

 

         try

         {

         Thread.sleep(wartezeit); // Pause: Andere Prozesse sollen auch rein können

         }

            catch(InterruptedException e)

         {

            System.out.println(e.getMessage());

         }

       einlesen(tierart, wartezeit);

     }

 

 

 

      public void run()

      {

          einlesen();

      }

}

5.3 Kuh

 

import java.io.*;

 

class Kuh extends Haustier implements Runnable

{

   void einlesen()

   {

           einlesen("KUH",5000);

   }

}

 

5.4 Schaf

 

import java.io.*;

 

class Schaf extends Haustier implements Runnable

{

   void einlesen()

   {

           einlesen("SCHAF", 1000);

   }

}

 

 

6. Bauernhof

6.1 Bauernhof

 

class bauernhof

{

 

   public static void main (String[] args)

   {

 

      Schaf s = new Schaf();

      Kuh k = new Kuh();

 

      Thread schafThread = new Thread(s);

      Thread kuhThread = new Thread(k);

 

 

      kuhThread.start();

      schafThread.start();

 

   }

}

 

6.2 Haustiere

 

import java.io.*;

abstract class Haustier implements Runnable

{

 

      Object v = new Object();

 

      static int boxNummer = 0;

 

      String viehName;

 

         abstract void einlesen();

 /*

      void setWartezeit(int wZeit)

      {

          wartezeit = wZeit;

      }

 */

 

 

    void einlesen(String tierart, int wartezeit)

   {

 

     synchronized (v)

     {

 

        int aktBoxNummer = boxNummer;

        System.out.println("Generiere " + tierart + " für " + aktBoxNummer);

 

             try

             {

                Thread.sleep(1000);

             }

             catch(InterruptedException e)

             {

                System.out.println(e.getMessage());

             }

 

        // char zeich = ' ';

 

       System.out.println("*** Bitte " + tierart + " für die Box " + aktBoxNummer + " eingeben");

 

 

       try

       {

           BufferedReader din = new BufferedReader(new InputStreamReader(System.in));

           viehName = din.readLine();

 

 

       //    zeich = (char) System.in.readLine();

       }

           catch(IOException e)

       {

          System.out.println(e.getMessage());

       }

 

 

       System.out.println("-- " + tierart + " "  + viehName + " wurde Box " + aktBoxNummer + " zugeteilt\n");

       boxNummer++;

       System.out.println("In "+ tierart + " weitergezählt");

     } // synchronized

 

         try

         {

         Thread.sleep(wartezeit); // Pause: Andere Prozesse sollen auch rein können

         }

            catch(InterruptedException e)

         {

            System.out.println(e.getMessage());

         }

       einlesen(tierart, wartezeit);

 

   }

 

 

 

      public void run()

      {

          einlesen();

      }

6.3 Kuh

 

import java.io.*;

 

class Kuh extends Haustier implements Runnable

{

   void einlesen()

   {

           einlesen("KUH",5000);

   }

}

6.4 Schaf

 

import java.io.*;

 

class Schaf extends Haustier implements Runnable

{

   void einlesen()

   {

           einlesen("SCHAF", 1000);

   }

}