Witam!
Chcę napisać program w stylu konsument - klient korzystający z wątków.
Wiem, że jeszcze wątki nie działają, ale nie w tym problem (póki co).
Teraz jak tworzę dwa nowe obiekty Sprzedawce i Konsumenta, korzystają one z dwóch różnych tablic, a chodzi raczej o to, żeby korzystały z jednej. Pewnie jest to banalny problem, ale dopiero zaczynam pisać w ogóle obiektowo i w javie, więc ciężko jest mi się przestawić a chciałbym, żeby było to czysto obiektowo.
Oto co już mam:
//Produkt.java
import java.util.ArrayList;
public abstract class Produkt {
public int elementy = 5;
public int indeks = 0;
ArrayList lista = new ArrayList();
public synchronized String pobieranie() {
if (indeks == 0)
return "";
else {
int tmp = indeks;
Object temp;
indeks--;
temp = lista.get(tmp);
return (String)temp;
}
}
public synchronized boolean wstawianie(String nazwa) {
if (indeks == elementy)
return false;
else {
lista.add(indeks, nazwa);
indeks++;
return true;
}
}
}
//Konsument.java
public class Konsument extends Produkt implements Runnable {
public void run() {
for (int i = 0; i < 15; i++) { // dla wizualizacji efektu
if (pobieranie().equals(""))
System.out.println("Lista pusta");
else
System.out.println(pobieranie() + "to pobral konsument");
}
}
}
//Sprzedawca.java
import java.util.*;
public class Sprzedawca extends Produkt implements Runnable {
Random r = new Random();
public void run() {
for (int i = 0; i < 15; i++) { // dla wizualizacji efektu
String token = Long.toString(Math.abs(r.nextLong()), 36);
if (wstawianie(token))
System.out.println(token + "to wstawil sprzedawca");
else
System.out.println("Tablica pelna");
}
}
}