[wątki] progressBar + drugi wątek

0

Witam wszystkich!
Na początku chciałbym powiedzieć że jestem początkujący w Javie. Szukałem odpowiedzi na moje pytanie kilka dni w necie jednak nic co by mi pomogło nie znalazłem...
Problem polega na tym że jest długa operacja (ok minuty) i progresBar który powinien być wyświetlony jednocześnie a po zakończeniu tej długiej metody progressBar powinien przestać działać.

class Operacja
{
 public void operacja1()
 { 
  //dluga operacja
 }
}

class Progressbar extends javax.swing.JFrame
{
 public Progressbar()
 {
  //zainicjownie całego jframe oraz
  jProgressBar.setIndeterminate(true); //zeby było na czas nie określony, by nie wyświetlało xx%.
  this.setLocationRelativeTo(null); // by było okno na środku
 }
}

class Test
{
 public static void wlaczDzialanie()
 {
 /*
 Tutaj powinienem umieścić kod który uruchomi te dwa procesy jednocześnie
 */
 }
}

W miejscu gdzie mają być uruchomione procesy myślę że dobrym rozwiązaniem będzie użycie wątków.
Próbowałem wielu sposobów, jednak nie chce zadziałać by sprawdzić czy proces (ten długi) zakończył działanie (znalazłem w necie):
wątek działania długiego procesu oznaczymy jako 'w1'

while (!(w1.isInterrupted() ))
{ }

Nie mam pomysłu jak zrobić by wątek z progressBarem zakończył działanie w tym samym czasie gdy kończy działanie długa operacja...
We wszystkich artykułach co znalazłem również w mojej książce thinking in java 3 i 4 jest uruchamianie kilku wątków. Na tym forum znalazłem też kilka podobnych tematów ale odpowiedzi na ten problem nigdzie nie ma...
Jak macie jakieś pomysły, sugestie albo linki do artykułów które są związane z tematem z chęcią przeczytam!

Pozdrowienia 4ALL

0

Zamotałeś...

Lepsze podejście to użycie Wzorca Obserwator.
Niech DO ma listę Obserwatorów, czyli obiektów zainteresowanych stanem DO.
Niech twoja długa operacja (DO) ma punkty charakterystyczne, w których będzie można ocenić ile już czasu/procen zadania upłynęło.
Niech w każdym takim punkcie informuje zarejestrowanych obserwatorów o swoim stanie.
W takim wypadku w momencie rozpoczęcia programu tworzysz dodatkowy wątek:
Wątki
w którym będzie wykonywana DO.
W wątku głównym niech będzie tworzony progressbar, który będzie dopisany do listy obserwatorów DO.
Na zakończenie uruchamiasz DO przez start()

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