java中断活动线程
我试图使用Terminate()中断在Restart()中创建的活动线程,它们都扩展了Event()。我设置了它,因此Terminate会将Terminate的值更改为true,但我无法让setter在Terminate()之外更改Terminate的值: 以下是相关代码: 重新启动。java:
public class Restart extends Event {
...
public void action() {
...
for (int i = 0; i < eventList.size(); i++) {
Class<?> eventClass;
try {
eventClass = Class.forName(eventList.get(i));
Object eventObject;
if (eventList.get(i).equals("Bell")) {
eventObject = eventClass.getConstructor(long.class, int.class).newInstance(timeList.get(i), rings);
}
else {
eventObject = eventClass.getConstructor(long.class).newInstance(timeList.get(i));
}
eventThread = new Thread((Runnable) eventObject);
eventThread.start();
}
catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e) {
e.printStackTrace();
}
}
}
}
终止。java
public class Terminate extends Event {
public Terminate(long delayTime) {
super(delayTime);
}
public void action() {
setTerminate(true);
System.out.println(getTerminate());
}
public String toString() {
return "Terminating";
}
}
事件。java
public abstract class Event implements Runnable {
...
public boolean terminate;
...
public void setTerminate(boolean terminate) {
this.terminate = terminate;
}
public boolean getTerminate() {
return terminate;
}
public void run() {
try {
Thread.sleep(delayTime);
} catch (InterruptedException e) {
e.printStackTrace();
}
try {
System.out.println(getTerminate());
while (getTerminate()) {
eventThread.interrupt();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println(this.toString());
this.action();
}
catch (Exception e) {
e.printStackTrace();
}
}
共 (0) 个答案