Co robię źle, że wątek nie działa prawidłowo?

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

Po kliknięciu przycisku start wątku:

private void jButtonActionPerformed(java.awt.event.ActionEvent evt) {                                            
        
        if(t.isAlive())
        {
            t.stop();
        }
        t.start();
    }

Gdzieś było napisane żeby nie używać thread.stop() a jeśli już to nadpisać metode stop()

         public void stop()
         {
             t=null;
         }

Zrobiłem tak ale nic nie dało. Za pierwszym razem się uruchamia a za 2 razem wywala błąd IllegalThreadStateException tak jakby nie kończyło tego wcześniejszego wątku.

`dodanie znacznika ``` - @furious programming

0

Spróbuj zamiast

t.stop();

dać t.destroy()

1

metody stop oraz destroy są deprecated.
Zawołaj interrupt na wątku a na event kliknięcia stwórz nowy wątek

new Thread(thread).start();
0

Działa tylko wątki cały czas istnieją. Nie będzie to w niczym przeszkadzać jak będzie bardzo dużo wątków nie ma jakiś ograniczeń co do ilości wątków?
Przy kliknięciu na przycisk gdy wcześniejszy wątek jeszcze pracuje wyskakuje:
Exception in thread "Thread-19" java.lang.IndexOutOfBoundsException:
dlatego wiem że wątki cały czas istnieją.

0

Rozumiem, że "dusisz" przycisk :) może w związku z tym na czas działania wątku ustaw mu

button.setEnabled(false);
0

Warto przeczytać:

  1. How do you kill a thread in Java? - http://stackoverflow.com/questions/671049/how-do-you-kill-a-thread-in-java;
  2. Why are Thread.stop(), Thread.suspend(), Thread.resume() and Runtime.runFinalizersOnExit() deprecated? - http://docs.oracle.com/javase/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html;
  3. Class Thread Java 8 docs - http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html;
  4. Alternate to Thread.stop() in Java 8? - http://stackoverflow.com/questions/23317332/alternate-to-thread-stop-in-java-8.

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