Zatrzymywanie i wznawianie watkow

0

Witam wszystkich i prosze o pomoc bo juz nie mam sily zeby rozwiazac ten problem.
Tworze watek:
Thread thread = new Thread() {
public void run() {
costTam.pewnaMetoda();
}
};
I posiadam okno na ktorym sa dwa przyciski, jeden Resume i drugi Pause. I chcialbym zeby po nacisnieciu przycisku Pause watek sie zatrzymywal dopoki nie zostanie nacisniety przycisk Resume.
Na grupie dyskusyjnej dowiedzialem sie ze powinienem zrobic to tak dla uspienia watku:
synchronized(thread) {
try {
thread.wait();
}catch(Exception e) {
}
}
Ale to sprawia ze cala plikacja "zamraza sie" :/ Czy moglby mi ktos pomoc bo nie wiem jak mam to zrobic :(

0

Ja zatrzymywanie wątków robiłem w nieco inny sposób:
ustawiałem specjalną flagę, którą wątek cyklicznie sprawdzał i jeśli była ustawiona to nic nie robił... a jak była to działał ;) i działało OK

Thread thread = new Thread() {
public void run() {
while(true){ \true, aby wątek się nie zakończył
if(!zatrzymaj) \to jest ta flaga
try {
jakasMetoda
sleep(200); \uśpienie wątku, aby nie zablokował aplikacji
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
thread.start();

flagę możesz ustawić np. metodzie listenera dla przycisków......

0

No tak, ale ja ta metode ktora mam laduje dynamicznie, i troche to nie pasuje za bardzo. W ostatecznosci tak zrobie. Ale wciaz szukam innych rozwiazan :)

0

Jeśli chcesz poczytać o wątkach ściągnij:

ftp://ftp.helion.pl/online/jv2te2/jv2te2-1.pdf

to jest rozdział java core poświęcony wątkom
może ci pomoże....

0

Zrobilem to troche inaczej bo to chyba jedyny sposob w moim przypadku. Wszedzie czytalem ze nie jest to dobry ale jak mus to mus :/ a wiec do zatrzymania watku uzylem thread.suspend(); a wznowienia thread.resume(); i wszystko bylo by ok ale za ktoryms razem zatrzymywania i wznawiania watku program "zamarza" :/ czy mozna to jakos poprawic ?
PS. Nie moge zrobic tak jak wyzej gdyz moja metoda jest tylko i wylacznie raz wykonywana w watku, a do klasy w ktorej jest ta metoda nie moge nic zmieniac ani dodawac :/

0

A spójrz do dokumentacji, jakie metody ma klasa Thread...

0

Juhas ales mi pomogl :/ myslisz ze nie szukalem tam ??
Post mozna uwazac za zamkniety :) poradzilem sobie poprzez przekazanie metodze referencji do przycisku i podczas pracy sprawdza czy przycisk jest wcisniety czy nie i w zaleznosci od tego wywoluje sleep(10) w petli while i czeka na "odcisniecie" :)

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