子线程如何interrupt主线程

zidane5364845 2011-12-01 11:55:41
子线程开始运行时,主线程开始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//
}

}


或者还有其他什么办法?多谢!
...全文
105 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧