子线程如何interrupt主线程
子线程开始运行时,主线程开始sleep30秒。然后有两种情况:
1,子线程运行时间超过30秒,主线程在30秒过后中断子线程;
2,子线程30秒之内运行完成,则唤醒正在sleep中的主线程,继而主线程继续往下运行。
我用sleep实现了情况1,但是对情况2却没办法。
目前的思路是,在子线程运行后加一个.interupt()以中断在sleep中的主线程使其继续运行。但是,问题是,我找遍了也没找到主线程怎么表示,我是指主线程的代号是什么,所以没办法用。
代码如下:
//子线程
public class Clock extends Thread{
volatile boolean keepRunning = true;
public Clock(){
}
public void run() {
while(keepRunning){
try {
XXXXXXXX; //要执行的代码,运行时间可能不到30秒也可能超过30秒
?.interrupt();//问题即在此处,“?”代表主线程,“?”该是什么
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
public void pleaseStop() { keepRunning = false; }
}
//主线程
public class xword{
public static void main(String[] args){
XXXXX//
Clock c= new Clock();
c.start();
try { SECONDS.sleep(30); } // 等待30秒
catch(InterruptedException ignore) {}
c.pleaseStop(); //30秒后,强制停止子线程c
XXXXXX//
}
}
或者还有其他什么办法?请简单点,多谢!
------最佳解决方案--------------------LZ可以用子线程.join()方法,即子线程完后运行主线程 更多内容LZ自己百度把
------其他解决方案--------------------自己顶,多谢了