关于Java线程超时退出的问题.

小弟近来有个任务是这样的,JAVA主程序中开启一个线程,我希望在一定的时间范围内如果这个线程还没有运行完,就采取一些方法主动将他干掉,试了网上很多的方法都没有用,顶多是能... 小弟近来有个任务是这样的,JAVA主程序中开启一个线程,我希望在一定的时间范围内 如果这个线程还没有运行完,就采取一些方法主动将他干掉,试了网上很多的方法都没有用,顶多是能抛出个异常,通知一下超时,但是线程还是在继续运行。
请教各位大虾们该怎么解决啊!!!
就没有哪个神人,能解决这个问题么. 我开的这个线程可能是要和别的程序进行交互,交互过程中可能会卡死,所以我才想能不能采取一些方法将他主动停掉,你们介绍的方法都不行...

结贴了吧.
展开
 我来答
nilaor
推荐于2016-10-22 · TA获得超过903个赞
知道小有建树答主
回答量:537
采纳率:0%
帮助的人:539万
展开全部
你在捕捉到的异常中,调用一下线程的interrupt()方法就可以对线程进行中断,当然,你的线程中的run方法中不能catch了interrupt()异常并且忽视这个异常。

比如在出现异常的地方:
threadA.interrupt();

而threadA的run方法中:
public void run() {
while(true) {
try {
....
} catch (InterruptedException) {
break; //这样是可以的,如果没有break或者修改为continue则不行
}
}
}

也可以将这个放在while循环之外。
public void run() {
try {
while(true) {

....
}
} catch (InterruptedException) {
....
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5ca104357
2010-07-13 · TA获得超过2595个赞
知道小有建树答主
回答量:874
采纳率:100%
帮助的人:1380万
展开全部
class AutoCloseThread implements Runnable{
private int limit;//限制
private Timer timer=new Timer();

@Override
public void run() {
TimerTask task=new TimerTask() {
@Override
public void run() {
limit++;
if(limit>50) timer.cancel();
}
};
timer.schedule(task, 0, 1000);
timer.schedule(task, 0);
}

}
shaoyunlu 2010-7-13 17:31:19
timer.schedule(task, 0, 1000);
timer.schedule(task, 0);
这两个 要一起写?
军 2010-7-13 17:44:31
不是
军 2010-7-13 17:44:43
timer.schedule(task, 0, 1000);
timer.schedule(“webservice”, 0);

参考资料: 还有其他问题的话,给我发百度消息

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhang_ly520
2010-07-13 · TA获得超过112个赞
知道答主
回答量:362
采纳率:0%
帮助的人:228万
展开全部
java.util.concurrent.Future
默认实现java.util.concurrent.FutureTask
你去查一下有关这个类的用法吧,他能满足你的要求。
或者java.util.concurrent.ExecutorService这个线程池也行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xying2222970d
2010-07-19 · 超过20用户采纳过TA的回答
知道答主
回答量:88
采纳率:0%
帮助的人:32.4万
展开全部
线程中run()写法类似下面
public void run()
{
....
while(t<毫秒)

。。。。。
}//程序结束


在while里设置线程停止条件,我这个是判断时间。也可以设置一个标识,例如:
public void run()
{
boolean isEnd = false;
.....
while(isEnd == false)
{
if(....)
{
isEnd = true;
break;
}
......
}
}

有空看看《JAVA多线程设计》,好书,结合设计模式讲的JAVA多线程。浅显易懂

===============补充你的补充问题==============

你既然说是想主动停掉。这个意思已经很明显了,你现在的问题只是,你在代码设计思路上陷入死循环了。
所谓主动停掉就是到了指定的条件,程序自然死亡结束。你要做的就是写一个销毁方法,将线程结束的所有操作都写在里面,包括你调用或交互的其它程序结束方法。然后在指定条件下调用这个销毁操作。我不知道我说的明白不?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式