Włączenie wątku

Włączenie wątku
SE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
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:

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

Funkcje:

Kopiuj
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:

Kopiuj
public funkcje funkcje;
public funkcja(funkcje funkcje){
this.funkcje=funkcje;
}
public void run(){
funkcje.funkcja();
}
Burdzi0
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Futurama
  • Postów: 887
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.