Попытка прекратить нить, а затем начать новую, однако, когда я иду, чтобы начать новую нить после того, как она, возможно, избавится от другой, она выдает IllegalThreadStateException
. Любая помощь будет принята с благодарностью, поскольку я как бы новичок в этой теме. Спасибо.Illegal Thread State Exception при запуске новой нити
public class Start_btn_Listener extends JButton implements ActionListener {
/*
* ActionListener for the Start button in which starts the pendulum animation by creating a new thread.
*/
static volatile Thread p =new Thread(GUI.shm_panel);
@Override
public void actionPerformed(ActionEvent e) {
if(!GUI.GetRunning()){ // Determines whether a thread of Pendulum_Swing is already running.
p.start();
GUI.running = true;
}
else{
JLabel message = new JLabel("Pendulum is already running");
Object[] options = {"OK"};
final JOptionPane pane = new JOptionPane(message, JOptionPane.ERROR_MESSAGE, JOptionPane.OK_OPTION, null, options);
JDialog dialog = pane.createDialog(GUI.shm_panel, "Running");
message.requestFocus();
dialog.setVisible(true);
/*
* Displays an error message when the Start button is clicked but the pendulum is still going.
* Longer than usual to remove the focus border from the OK button as it always bugs me.
*/
}
}
public static Thread GetThread(){
return p;
}
}
Вы не можете перезапустить существующую тему. Вам нужно создать «новый» поток, а затем запустить этот поток. – camickr
'GetThread()' .. 1) Пожалуйста, изучите общую номенклатуру Java (соглашения об именах - например, 'EveryWordUpperCaseClass',' firstWordLowerCaseMethod() ',' firstWordLowerCaseAttribute', если это не 'UPPER_CASE_CONSTANT') и использовать ее последовательно. 2) Чтобы получить более эффективную помощь, отправьте сообщение [MCVE] (http://stackoverflow.com/help/mcve) (минимальный полный проверяемый пример) или [SSCCE] (http://www.sscce.org/) (Short, Самостоятельный, правильный пример). –
Итак, где бы я создал новую тему? – pepper