【发布时间】:2016-07-07 12:55:35
【问题描述】:
我试图通过调用 Thread 类的 sleep() 方法来暂停我的部分程序的执行几秒钟。但是,当我尝试此操作时,此调用之后立即出现的代码仍会立即执行。例如,如果我有代码:
Thread compoundThread = new Thread(new Runnable()
{
public void run()
{
try
{
Thread.currentThread().sleep(2000);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
Thread.currentThread().interrupt();
}
}
});
compoundThread.start();
System.out.println("line 15")
第 15 行立即打印。有没有办法解决这个问题?我认为sleep() 方法的整个想法是暂停执行。
根据 Philipp 的评论进行编辑
while (totalNoOfPhase1Trials > 399)
{ //
Phase1Trial phase1Trial = new Phase1Trial(numberOfElements, elementColors);
displayComplexStimulus(phase1Trial.getComplexStimulus());
validate();
Thread compoundThread = new Thread(new Runnable(){
public void run() {
try {
Thread.currentThread().sleep(2000);
System.out.println("line 226");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
}
}
});
compoundThread.start();
try {
compoundThread.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
displayCompoundStimulus 方法显示一组jlabels 没有延迟,当我不包括你刚才提到的我让线程休眠的代码时。但是,当我包含使线程进入睡眠状态的代码时,图像的显示也会延迟两秒钟,这很奇怪,因为 Thread.sleep() 在图像显示后才被执行。
【问题讨论】:
-
能否请您包含代码的行号
-
我不知道怎么做,但是 System.out.println("line 15") 是第 15 行。
-
一个线程将在另一个执行上下文中执行;你期待什么?
-
那么你是说在 run 方法中有 print 行吗?
标签: java multithreading thread-sleep