Włączenie wątku

Włączenie wątku
SE
  • Rejestracja:około 8 lat
  • Ostatnio:prawie 8 lat
  • 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
Masz paskudne formatowanie kodu, ciężko się to czyta
hcubyc
Wrzuć cały kod. W ten sposób osoba, która będzie chciała ci pomóc odpali go u siebie, może zdebugguje, a tak przy statycznej analizie kodu na forum nie jest lekko. http://sscce.org/
Burdzi0
  • Rejestracja:około 9 lat
  • Ostatnio:22 dni
  • Lokalizacja:Futurama
  • Postów:887
0

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


Bite my shiny metal ass!
Life throws you an error code like that, you don't have the luxury of a ZnVja2luZw== pop-up explanation *Robię projekty studenckie, pisz priv ;) *

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.