日期:2014-05-20  浏览次数:20986 次

如何在一个while循环里暂停一定时间?
遇到一个很棘手的问题,情况如下。
我是使用swt做界面。
然后启动一个进程,在这个进程中有一个while循环。
现在需要在while循环代码里暂停10分钟,然后再继续循环。
我曾经使用wait(),sleep()来暂停,可是执行这两个命令后,虽然这个循环里的代码,也能够正常执行我的整个项目(包括swt界面)都成为无响应状态,失去了所有作用。(而且还会影响到一些windows的应用程序)我也曾试过在while()里用timer(),但是好像while程序并不是等待timer()代码里的类执行完才继续循环,因为会陷入死循环中。请高手能够给我个方向解决。大致代码如下:
public   void   widgetSelected(final   SelectionEvent   e)   {
      task_counter_r.insertElementAt(new   Main1(),main_counter-1);
System.out.println(main_counter);
task_counter_t.addElement(new   Thread(   (Runnable)   task_counter_r.elementAt(main_counter-1)));
((Thread)   task_counter_t.elementAt(main_counter-1)).start();

//以上是在界面上按一个bottom然后就开始一个线程,很乱,不过就当成//开始一个线程就可

class   Main1     implements   Runnable   {
protected   Object   begin1;
public   void   run(){
Display.getDefault   ().asyncExec   (new   Runnable   ()   {
  public   void   run()   {

while   (){

//在这里该怎么样才能暂停while程序而不影响到整个项目或者说是界面呢

}
}
}

------解决方案--------------------
逻辑处理的代码不要跟GUI放在一个线程里,也就是说,逻辑处理单独开一个线程