Java import org.eclipse.core.runtime.jobs.Job;不睡觉

时间:2013-08-08 15:30:16

标签: java eclipse multithreading debugging eclipse-plugin

我即将为Eclipse实现调试器。为此,我想在调试设备到达断点时使用org.eclipse.core.runtime.jobs.Job; Objetct来处理事件。在这种情况下,thread.resume()返回。即使线程被挂起,Job也不会休眠:

Output:
program suspended
cannot sleep
<repeat to infinity>

这是代码:

@Override
protected IStatus run(IProgressMonitor monitor) {

  while (isTerminated() == false) {

    try {
      if (thread.isSuspended() == true) {
        System.out.println("program suspended");
        if(sleep() == true) { // wait for someone to wake me up
          System.out.println("job is sleeping");                            
        } else {
          System.out.println("cannot sleep");
        }            
      } else {
        thread.resume();
      }
    } catch (DebugException e) {
      e.printStackTrace();
    } 

  }
  return Status.OK_STATUS;      
} 

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

Job.sleep()始终不执行任何操作,并在作业运行时返回false,它适用于仍计划运行作业的情况。只需使用普通的线程代码即可。