M
Mirko_Gast
Gast
Hallo! Haben in der Schule folgede Aufgabe bekommen:
Simulieren Sie eine Warteschlange vor einem Skilift (Schlepplift)
mit folgenden Eigenschaften:
Alle 350 ms kommt ein neuer Skiliftbügel, der zwei Skifahrer befördern kann, wenn 2
Skifahrer da sind, die auf diesen Bügel warten. Der Skilift kann jeweils nur Paare von
Skifahrern befördern, d.h. einzelne Skifahrer müssen warten, bis sie einen Partner finden.
Von der Piste kommen zufällig Skifahrer alle 100 bis 300 ms zur Warteschlange hinzu.
Die Skifahrer von der Piste erhalten fortlaufende Nummern, um sie zu unterscheiden:
Skifahrer(1), Skifahrer(2), …
Habe schon die Klassen SkiFahrer, SkiPiste, SkiLift, WarteSchlange soweit fertig. Was ich nicht hinkriege ist die getMethode() von der Warteschlange. Ich habe mir überlegt eine Klasse SkiFahrerPaar anzulegen..
Hat jemand eine Idee wie ich die get() Methode richtig implementiere damit ich diese dann im Consumer ( SkiLift)einbauen kann?
Simulieren Sie eine Warteschlange vor einem Skilift (Schlepplift)
mit folgenden Eigenschaften:
Alle 350 ms kommt ein neuer Skiliftbügel, der zwei Skifahrer befördern kann, wenn 2
Skifahrer da sind, die auf diesen Bügel warten. Der Skilift kann jeweils nur Paare von
Skifahrern befördern, d.h. einzelne Skifahrer müssen warten, bis sie einen Partner finden.
Von der Piste kommen zufällig Skifahrer alle 100 bis 300 ms zur Warteschlange hinzu.
Die Skifahrer von der Piste erhalten fortlaufende Nummern, um sie zu unterscheiden:
Skifahrer(1), Skifahrer(2), …
Habe schon die Klassen SkiFahrer, SkiPiste, SkiLift, WarteSchlange soweit fertig. Was ich nicht hinkriege ist die getMethode() von der Warteschlange. Ich habe mir überlegt eine Klasse SkiFahrerPaar anzulegen..
Hat jemand eine Idee wie ich die get() Methode richtig implementiere damit ich diese dann im Consumer ( SkiLift)einbauen kann?
Code:
public class SkiFahrer {
static int id;
public SkiFahrer(){
id++; }}
Code:
public class SkiFahrerPaar {
SkiFahrer a;
SkiFahrer b;
public SkiFahrerPaar(SkiFahrer a, SkiFahrer b){
this.a = a; this.b = b; }}
Code:
import java.util.*;
public class WarteSchlange {
public LinkedList <SkiFahrer> schlange;
int anzahl;
//Der Warteschlange wird ein SkiFahrer zugefügt
synchronized public void put (SkiFahrer f) {
while(true){
schlange.add(f);
anzahl++;
System.out.println("Der Skifahrer Nr [ "+ anzahl +" ] kommt");
/* try{
wait((long) (Math.random() * 300+1 ));
}
catch (InterruptedException e) {
System.out.println("Ein Fehler" + e); */
}
}
//Aus der Warteschlange werden die ersten beiden SkiFahrer entnommen
synchronized public SkiFahrerPaar get() {
while(schlange.size()<2){
try { wait(); } catch(InterruptedException e) {}
}
SkiFahrer sf1 = schlange.get(0);
SkiFahrer sf2 = schlange.get(1);
schlange.removeFirst();
schlange.removeFirst();
notifyAll();
return new SkiFahrerPaar(sf1,sf2);//,schlange.get(1));
}
public WarteSchlange(){
schlange = new LinkedList<SkiFahrer>(); }}
Code:
public class SkiPiste extends Thread{
WarteSchlange schlange;
public void run(){
while(true){
schlange.put(new SkiFahrer());
try{
wait((long) (Math.random() * 300+1 ));
}
catch (InterruptedException e) {
System.out.println("Ein Fehler" + e);
}}}
public SkiPiste( WarteSchlange schlange){
this.schlange=schlange;
}}
Code:
public class Skilift extends Thread {
WarteSchlange schlange;
public void run(){
while(true){
// if(schlange.)
/*try{
wait((long) (Math.random() * 300+1 ));
}
catch (InterruptedException e) {
System.out.println("Ein Fehler" + e);
}
schlange.get();*/
// schlange.get().a.;
}}
public Skilift(WarteSchlange schlange){
this.schlange = schlange;
}}