Włączenie wątku

0

Witam. Mój program wygląda następująco:

  • klasa main, która odpala wątki
  • klasa w której są przechowane wszystkie funkcje, które są odpalane przez wątki
  • cztery wątki
    Działa to tak, że dwa wątki odpalają jedną funkcję. Funkcja ta ma za zadanie dopisywać do tablicy kolejne liczby. Działa ona tak, że dodaje je aż pewna zmienna nie osiągnie 0. Funkcja ta jest zsynchronizowana.
    Niżej mamy funkcję, której zadaniem jest przypisanie w zerowy indeks zero i przesunięcie liczb w tej tablicy, tak aby funkcja wyżej mogła sobie dopisać kolejne. Warunkiem jest to, że tablica nie zawiera w 0 indeksie 0.
    Niestety wątek odpowiedzialny za odpalenie uruchamia się na samym początku programu, gdy tam jest zero i na tym przestaje działać. Funkcja ta również zmniejsza inną zmienną, która gdy osiągnie stan równy 0, zmienia wartość boolean, tak aby main mógł odpalić czwarty wątek, odpowiedzialny za uzupełnienie tamtej zmiennej.

Main:

public static boolean x = true;
main:
watek1;
watek2;
if (x==true){
watek3;
}
else{
watek4;
}

Funkcje:

int dotablicy=25;
int tablica[10];
int uzupelnianie;
int stan;
synchronized void tablica(){
while(dotablicy>0){
if(tablica[i]==0){
tu sie uzupelnia
dotablicy--;
}
}

void wydanie(){
if(tablica[0]!=0){
if stan>0{
tablica[0]=0;
przesuniecie liczb tablicy w lewo;
stan--;
}else{
main.x=false;
}

void dopelnienie(){
stan=20;
main.x=true;

Każdy wątek wygląda mniej więcej tak:

public funkcje funkcje;
public funkcja(funkcje funkcje){
this.funkcje=funkcje;
}
public void run(){
funkcje.funkcja();
}
0

To są najprostsze Runnable?
Popatrz może tutaj albo tutaj

1 użytkowników online, w tym zalogowanych: 0, gości: 1