【发布时间】:2013-08-25 15:29:09
【问题描述】:
我遇到了线程不休眠的问题。
我不能把我的整个代码放在这里。所以,为了重现,这是一个等待 5 秒的基本代码。
try {
int millisec = 5000;
System.out.println(new Date());
System.out.println("We wait " + millisec + " milliseconds");
Thread.sleep(millisec);
System.out.println(new Date());
} catch (Exception e) {
e.printStackTrace();
}
输出:
2013 年 8 月 22 日星期四 20:01:42 CEST
我们等待 5000 毫秒
2013 年 8 月 22 日星期四 20:01:47 CEST
一切正常。
但是当我把这段代码放在一个线程中时,没有睡眠。此代码示例:
try {
Thread aThread = new Thread(new Runnable() {
@Override
public void run() {
try {
int millisec = 5000;
System.out.println(new Date());
System.out.println("We wait " + millisec + " milliseconds");
Thread.sleep(millisec);
System.out.println(new Date());
} catch (Exception e) {
e.printStackTrace();
}
}
});
aThread.start();
} catch (Exception e) {
e.printStackTrace();
}
输出:
2013 年 8 月 22 日星期四 20:07:30 CEST
我们等待 5000 毫秒
...仅此而已,线程已终止。
我不明白为什么。请问有什么想法吗?
编辑:我使用 Eclipse 和 JUnit 进行测试。
【问题讨论】:
-
您的进程本身是否存活超过 5 秒?
-
您的代码对我有用。您确定您的 IDE 没有切断输出或其他什么?
-
对我也有用,清理并重试。
-
这不是必须的,但为了安全起见,请尝试在睡眠后添加一些 println 语句(只是打印一堆垃圾)。也许您的控制台出于某种原因正在缓冲输出。
-
我使用 Eclipse 和 Junit 进行测试。如果你没问题,问题出在我的 IDE 上。我去看看。感谢您的及时回复!
标签: java multithreading junit sleep