Originariamente inviato da lio.b
Salve,
ho un thread che nel costruttore contiene un intero. Dovrei bloccare questo thread, invocare una set su questo intero per poi riavviarlo. Ho scritto quanto segue:
Thread t.interrupt();
t.set(int i);
t.start();
Il compilatore mi genera questa eccezione:java.lang.IllegalThreadStateException.
Come posso fare?
Graie a tutti
dalle api del JDK

public void start()

Causes this thread to begin execution; the Java Virtual Machine calls the run method of this thread.

The result is that two threads are running concurrently: the current thread (which returns from the call to the start method) and the other thread (which executes its run method).

It is never legal to start a thread more than once. In particular, a thread may not be restarted once it has completed execution.

Throws:
IllegalThreadStateException - if the thread was already started.
See Also:
run(), stop()

quindi da errore perchè il thread non è ancora interrotto quando richiami start().

devi testare che il Thread sia interrotto prima di riavviarlo con il metodo isInterrupted() o il metodo isAlive() in questa maniera

while(t.isAlive())
t.join(1000);