Dlaczego AWT Eventqueue 0 zawiesza okno główne?

2015-01-21 22:46
0

Mam program w którym dłuższa operacja wykonuje się w osobnym wątku. W czasie trwania osobnego wątku wszystko jest ok natomiast po jego zakończeniu główne okno programu przywiesza się na około 11 sekund. Zdziwiło mnie to bo zakończeniu wątku nie są wykonywane żadne operacje które mogłyby przywiesić okno. Zajrzałem do profilera i widać tam że gdy osobny wątek przestanie być aktywny zaczyna działać AWT Eventqueue 0 i to on blokuje okno bo gdy przejdzie w stan park albo monitor(nie wiem dokładnie który bo są oznaczone bardzo podobnie) to główne okno już działa.
Wątek:

Thread t = new Thread(new Runnable() {
         public void run()
         {
              ///obliczenia i aktualizacja progressbara
         }
    });

Po kliknięciu przycisku rozpoczyna się nowy wątek:

private void jButtonActionPerformed(java.awt.event.ActionEvent evt) {                                            
     new Thread(thread).start();
    }

Pozostało 580 znaków

2015-01-21 23:21
0

Cos kręcisz

Pozostało 580 znaków

2015-01-21 23:46
0

Do aktualizacji progressbara mam tylko takie cos:

jProgressBar1.setValue((int)x+1);

i działa. Mógłbyś coś więcej napisać w jaki sposób wyświetlić te loggery albo zrobić core dumpa?

Pozostało 580 znaków

2015-01-22 00:12
0

Logerami mogą być zwykle system.out.print...
Algernatywnie
http://visualvm.java.net/coredumps.html

edytowany 1x, ostatnio: garai, 2015-01-22 00:12

Pozostało 580 znaków

2015-01-22 11:35
0

Tego heap dumpa trzeba zrobić w tym czasie gdy okno się przywiesza? Jeśli tak to zrobiłem ale nie wiem jak z tego odczytać gdzie utknął edt ;/
Heap dump w załączniku.

daj lepiej kod, chętnie obejrzę co tam stworzyłeś :) - garai 2015-01-24 19:19

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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