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();
}
}
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());
}
}
}
}
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());
}
}
}
}
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());
}
}
}
}
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.
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);
}
}
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());
}
}
}
}
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());
}
}
}
}
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());
}
}
}
}
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());
}
}
}
}
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());
}
}
}
}
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();
}
}
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();
}
}
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();
}
}
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();
}
}
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();
}
}
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();
}
}
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();
}
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();
}
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();
}
}
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();
}
}
import java.io.*;
class Kuh
extends Haustier implements Runnable
{
void einlesen()
{
einlesen("KUH",5000);
}
}
import java.io.*;
class Schaf
extends Haustier implements Runnable
{
void einlesen()
{
einlesen("SCHAF", 1000);
}
}
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();
}
}
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();
}
import java.io.*;
class Kuh
extends Haustier implements Runnable
{
void einlesen()
{
einlesen("KUH",5000);
}
}
import java.io.*;
class Schaf
extends Haustier implements Runnable
{
void einlesen()
{
einlesen("SCHAF", 1000);
}
}