我需要在我的应用程序中使用计时器,它不会阻止应用程序,所以我在class1
中创建类计时器并使用计时器创建线程:
Thread cas = new Thread() {
public void run(){
casovac = new timer();
}
};
cas.start();
然后,我在class2
中调用计时器方法:
piskvorky.casovac.startTimer();
但是,等待的所有类都是使用计时器完成的线程,其中是:
public void startTimer() {
zapnuto = true;
while(zapnuto) {
try {
Thread.sleep(20000);
} catch(InterruptedException ex) {
thread.currentThread().interrupt();
}
System.exit(-1);
}
}
为什么所有课程都在等待以及如何让他们不等待?
我会感激任何帮助。
答案 0 :(得分:1)
您的线程仅创建计时器,但不启动它。你可以在class2
开始。请尝试改为:
Thread cas = new Thread() {
public void run(){
new Timer().startTimer();
}
};
cas.start();
答案 1 :(得分:1)
您的初始化块
Thread cas = new Thread() {
public void run(){
casovac = new timer();
}
};
cas.start();
在一个单独的线程中,但这并不意味着计时器在该线程上运行。
还要注意它应该是新的Timer()'不是'新的计时器()'除非你使用自己的计时器'类。在这种情况下,名称应更改为' Timer'反正。
当你使用piskvorky.casovac.startTimer()
时,你仍然在主线程中调用阻塞应用程序的Thread.sleep(20000)
。
相反,您应该将startTimer()
方法调用移到单独的线程上,以便
Thread cas = new Thread() {
public void run(){
casovac = new Timer();
casovac.startTimer();
}
};
cas.start();