Есть следующий код:
@Override
public void doSomething(Action action) {
if(action == Action.GO){
try{
if(!t.isAlive()) t.start();
}catch(IllegalThreadStateException e){System.out.println(x + " " + y);}
}
}
Этот метод вызываеться другим потоком каждые 0.2 секунды. При завершении работы потока t, начинают выводиться x и y (это значит что выпадает IllegalThreadStateException). Вот код который вызывает этот метод:
@Override
public void actionPerformed(ActionEvent e){
Graphics g = Controller.getPanel().getGraphics();
g.clearRect(0, 0, 800, 600);
man.getHealth().paint(g, (man.getX()) * 10 - 8, (man.getY()) * 10 - 15);
g.drawImage(man.getSprite(), man.getX() * 10, man.getY() * 10, Controller.getPanel());
((Teamate)man).setRouter(router);
man.doSomething(Action.GO);
((Teamate)man).setRouter(new Router(30, 30));
man.doSomething(Action.GO);
}
А вот метод setRouter():
public void setRouter(Router router){
if(!t.isAlive()){
this.router = router;
this.direction = router.getDirection(this);
}
}
Boт Exception:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalThreadStateException
at java.lang.Thread.start(Unknown Source)
at com.LTP.AC.Objects.Teamate.doSomething(Teamate.java:94)
at com.LTP.AC.main.Game.actionPerformed(Game.java:24)
at javax.swing.Timer.fireActionPerformed(Unknown Source)
at javax.swing.Timer$DoPostEvent.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Почему вылетает Exception, и как все таки запустить поток сново по завершению?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пишу приложение на Java, использующее dll-библиотеку методов, реализованных на С++ (технология JNI)Оказалось, что для разной разрядности установленной...
Доброго времени сутокВопрос первый: Подскажите пожалуйста где правильно писать проверку на нахождение на нужной странице и нужно ли вообще...