M
Montra
Gast
Hallo,
ich versuche mich derzeit an Threads und habe ein paar Schwirigkeiten auf die richtige Idee zu kommen.
Ich wollte zum üben ein Parkhaus simulieren. Hierzu habe ich erstmal eine Klasse Car erstellt. Diese Klasse Car stellt ein Auto dar, es soll zunächst eine zufällige Zeit lang herumfahren und anschließend versuchen mit der Methode enter () ins Parkhaus einzufahren.
Das Parkhaus hat ein Boolean Array mit 10 Slots. Darin wird gespeichert welcher Platz belegt ist und welcher frei ist. Zunächst initialisiere ich dort dieses Array und außerdem ein Array aus 20 Cars.
Die Autos sollen wie schon erwähnt nach einer zufälligen Wartezeit ("rumfahren") versuchen ins Parkhaus zu gelangen, wenn ein Platz frei ist, sollen sie für eine zufällige Zeit dort parken (solange ist dieser Platz natürlich besetzt) und dann wieder aus dem Parkhaus hinaus fahren, wodurch wieder ein Platz frei wird.
Wenn allerdings kein Platz frei ist, soll das Auto für eine zufällige Zeit lang warten und dann erneut versuchen ins Parkhaus zu gelangen.
Ich komme nicht darauf wie ich das genau realisieren kann.
Bisher habe ich das hier:
Car:
ParkHouse:
ich versuche mich derzeit an Threads und habe ein paar Schwirigkeiten auf die richtige Idee zu kommen.
Ich wollte zum üben ein Parkhaus simulieren. Hierzu habe ich erstmal eine Klasse Car erstellt. Diese Klasse Car stellt ein Auto dar, es soll zunächst eine zufällige Zeit lang herumfahren und anschließend versuchen mit der Methode enter () ins Parkhaus einzufahren.
Das Parkhaus hat ein Boolean Array mit 10 Slots. Darin wird gespeichert welcher Platz belegt ist und welcher frei ist. Zunächst initialisiere ich dort dieses Array und außerdem ein Array aus 20 Cars.
Die Autos sollen wie schon erwähnt nach einer zufälligen Wartezeit ("rumfahren") versuchen ins Parkhaus zu gelangen, wenn ein Platz frei ist, sollen sie für eine zufällige Zeit dort parken (solange ist dieser Platz natürlich besetzt) und dann wieder aus dem Parkhaus hinaus fahren, wodurch wieder ein Platz frei wird.
Wenn allerdings kein Platz frei ist, soll das Auto für eine zufällige Zeit lang warten und dann erneut versuchen ins Parkhaus zu gelangen.
Ich komme nicht darauf wie ich das genau realisieren kann.
Bisher habe ich das hier:
Car:
Java:
public class Car extends Thread
{
public int mId;
public Car (int aId)
{
mId = aId;
}
public void run ()
{
System.out.println("Auto " + mId + " fährt rum!");
try
{
sleep ((long)Math.random() * 10000);
}
catch (Exception e)
{
e.printStackTrace();
}
System.out.println("Auto " + mId + " will ins Parkhaus!");
}
public void enter ()
{
System.out.println("Auto " + mId + " fährt ins Parkhaus!");
}
public void carWait ()
{
System.out.println("Auto " + mId + " wartet!");
try
{
sleep ((long)Math.random() * 10000);
}
catch (Exception e)
{
e.printStackTrace();
}
System.out.println("Auto " + mId + " versucht es nochmal!");
}
public void leave ()
{
System.out.println("Auto " + mId + " verlässt Parkhaus!");
}
}
ParkHouse:
Java:
public class ParkHouse
{
private boolean[] isFree = new boolean[10];
Car cars[] = new Car[20];
public void init ()
{
for (int i = 0; i < isFree.length; i++)
{
isFree[i] = true;
}
for (int i = 0; i < cars.length; i++)
{
cars[i] = new Car (i+1);
}
}
public void open ()
{
System.out.println("Das Parkhaus öffnet!");
System.out.println("Das Parkhaus schließt!");
}
public boolean checkIsFree ()
{
for (int i = 0; i < isFree.length; i++)
{
if (isFree[i] == true)
{
return true;
}
}
return false;
}
}