如何让线程在运行一段时间后,如果运行超过指定时间,就让该线程停止! 比如一线程run(){},里面一些业务处理,但是可能很快就完了,也可能很久没结束,我需要让它运行比如5秒后,不管结果,都中止该线程! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用定时器来做class Trd implements Runnable{ public void run(){ //do something }}class Main{ Main(){ final Thread t=new Thread(new Trd()); t.run(); final Timer timer=new Timer(); timer.schedule(new TimerTask(){ public void run(){ t.interrupt(); this.cancel(); timer.cancel(); } }, 5000); }} 下面是测试代码,还是哪里不对阿,线程没有结束!mport java.util.Date;import java.util.Timer;import java.util.TimerTask;public class ListenTest implements Runnable { public static void main(String[] args) { Main m = new Main(); } public void run() { while (true) { try { System.out.println(new Date().getTime()); Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}class Main { Main() { final Thread t = new Thread(new ListenTest()); t.run(); final Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() { t.interrupt(); this.cancel(); timer.cancel(); } }, 5000); }} timer.schedule(new TimerTask(){public void run(){}},5000)是延迟5秒钟执行,不是执行5秒停止, 问题应该在t.run();Main的构造函数执行到这里后,线程打开,就没有执行后面的了.就算不用while(true),定时器得不到折行 JAVA 初级问题 (彩票问题) 高手帮忙看一下:SocketException: Connection reset myeclipse中导入的工程中出现中文乱码 关于 MyEclipse 使用的一个问题。 用JAVA怎样实现文件分割合并 很有意思的一个题目:关于多线程!! java不是已经开源了吗? 中文字符串怎么比较大小 那里有jbuilder 如何在jbuider 6中将swing 控件放在自己想要放的位置 在线等待 java与mysql连接,mysql-connector-java-5.1.12-bin.jar要与mysql版本一致吗? Java怎样获取系统用户的操作日志那??
用定时器来做
class Trd implements Runnable{
public void run(){
//do something
}
}
class Main{
Main(){
final Thread t=new Thread(new Trd());
t.run();
final Timer timer=new Timer();
timer.schedule(new TimerTask(){
public void run(){
t.interrupt();
this.cancel();
timer.cancel();
}
}, 5000);
}
}
import java.util.Timer;
import java.util.TimerTask;public class ListenTest implements Runnable { public static void main(String[] args) {
Main m = new Main();
} public void run() {
while (true) {
try {
System.out.println(new Date().getTime());
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}class Main {
Main() {
final Thread t = new Thread(new ListenTest());
t.run();
final Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
t.interrupt();
this.cancel();
timer.cancel();
}
}, 5000);
}
}
Main的构造函数执行到这里后,线程打开,就没有执行后面的了.就算不用while(true),定时器得不到折行