遇到一个很棘手的问题,情况如下。
我是使用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放在一个线程里,也就是说,逻辑处理单独开一个线程