Guten Abend liebes Forum,
also ich habe unten folgende Aufgabe gegeben und habe das Problem, dass der Thread der Verkaufstelle nicht startet. Wäre nett von, wenn jemand einen Tipp hätte.
Eine Schuhfabrik hat mehrere Verkaufsstellen und Produktionsstätten.
Hierbei gibt es zwei Arten von Produktionsstätten:
(1) eine, die nur linke Schuhe und (2) eine, die nur rechte Schuhe anfertigt.
Die produzierten Schuhe werden also in zwei Lager (Lager-L, Lager-R) gesammelt, wobei
jeweils maximal 10 Schuhe gelagert werden können. Die Verkaufstellen ordern zunächst
immer einen linken und dann einen rechten Schuh.
also ich habe unten folgende Aufgabe gegeben und habe das Problem, dass der Thread der Verkaufstelle nicht startet. Wäre nett von, wenn jemand einen Tipp hätte.
Eine Schuhfabrik hat mehrere Verkaufsstellen und Produktionsstätten.
Hierbei gibt es zwei Arten von Produktionsstätten:
(1) eine, die nur linke Schuhe und (2) eine, die nur rechte Schuhe anfertigt.
Die produzierten Schuhe werden also in zwei Lager (Lager-L, Lager-R) gesammelt, wobei
jeweils maximal 10 Schuhe gelagert werden können. Die Verkaufstellen ordern zunächst
immer einen linken und dann einen rechten Schuh.
Java:
package viertensErstens;
public class ProduzentLinks extends Thread {
private LagerLinks links = new LagerLinks();
public ProduzentLinks() {
}
public void run() {
while (true) {
links.lagerBefuellenLinks();
}
}
}
Java:
package viertensErstens;
public class ProduzentRechts extends Thread {
private LagerRechts rechts = new LagerRechts();
public ProduzentRechts() {
}
public void run() {
while (true) {
rechts.lagerBefuellenRechts();
}
}
}
Java:
package viertensErstens;
import java.util.concurrent.Semaphore;
public class Verkaufsstelle extends Thread {
private LagerLinks links;
private LagerRechts rechts;
Semaphore s = new Semaphore(1);
public Verkaufsstelle() {
}
public void run() {
while (true) {
try {
s.acquire();
} catch (InterruptedException e) {
e.printStackTrace();
}
links.lagerEntleerenLinks();
rechts.lagerEntleerenRechts();
System.out.println("Schuhpaar verkauft.");
s.release();
}
}
public static void main(String[] args) {
Thread produzentLinks = new Thread(new ProduzentLinks());
produzentLinks.start();
Thread produzentRechts = new Thread(new ProduzentRechts());
produzentRechts.start();
Thread verkaufsstelle = new Thread(new Verkaufsstelle());
verkaufsstelle.start();
}
}
Java:
package viertensErstens;
public class LagerLinks {
int lagerplatzLinks;
public LagerLinks() {
lagerplatzLinks = 10;
}
public void lagerBefuellenLinks() {
if (lagerplatzLinks >= 0 && lagerplatzLinks <= 10) {
lagerplatzLinks--;
System.out.println("Linkes Lager befuellt: " + lagerplatzLinks);
}
else {
System.out.println("Linkes Lager voll!");
}
}
public void lagerEntleerenLinks(){
if(lagerplatzLinks >= 0 && lagerplatzLinks <= 10 ){
lagerplatzLinks++;
System.out.println("Linkes Lager entleert: " + lagerplatzLinks);
}
}
}
Java:
package viertensErstens;
public class LagerRechts {
int lagerplatzRechts;
public LagerRechts(){
lagerplatzRechts = 10;
}
public void lagerBefuellenRechts() {
if (lagerplatzRechts > 0 && lagerplatzRechts <= 10){
lagerplatzRechts--;
System.out.println( "Rechtes Lager befuellt: " + lagerplatzRechts);}
else {
System.out.println("Rechtes Lager voll!");
}
}
public void lagerEntleerenRechts(){
if(lagerplatzRechts >= 0 && lagerplatzRechts <= 10 ){
lagerplatzRechts++;
System.out.println("Rechtes Lager entleert: " + lagerplatzRechts);
}
}
}