class Tablica {
private String [] tablica = new String[500];
static int elementTablicy = 0;
public void dodajTablice() {
for(int i = 0; i < 500; i++) {
tablica[i] = "zdanie " + i;
}
}
synchronized public void wczytajJedenElementTablicy() {
System.out.println(tablica[elementTablicy]);
elementTablicy++;
}
}
class WczytajKolejnyElementTablicy implements Runnable{
private Tablica tablica;
Thread t;
public WczytajKolejnyElementTablicy(Tablica tablica, String name) {
this.tablica = tablica;
t = new Thread(this, name);
t.start();
}
@Override
public void run() {
while(true) {
System.out.print("watek " + t.getName());
tablica.wczytajJedenElementTablicy();
}
}
}
public class Main {
public static void main(String[] args) throws IOException, InterruptedException {
Tablica tablica = new Tablica();
tablica.dodajTablice();
for(int i = 0; i <= 5; i++) {
new WczytajKolejnyElementTablicy(tablica,"" +i);
}
}
}
program pobiera kolejne elementy tablic
macie może pomysł jak można zrobić ogranicznie to znaczy że jeden wątek nie może pobrać 2 pod rząd tablic czyli watek 1 np gdy sie juz wykonał i pobrał tab[0] przez wczytajJedenElementTablicy() żeby go zablokować i np. dostep do nastepnej tablicy żeby miał tylko wątek 2,3,4,5, i pózniej ponownie?
część wyniku:
watek 1zdanie 4
watek 0zdanie 5
watek 0zdanie 6 //np, tutaj jest blad poniewaz watek 0 drugi raz pod rząd wykonuje sie, a tak nie pownno
watek 3zdanie 7
watek 0zdanie 8
watek 1zdanie 9