【问题标题】:Java import org.eclipse.core.runtime.jobs.Job; does not sleepJava 导入 o​​rg.eclipse.core.runtime.jobs.Job;不睡觉
【发布时间】:2013-08-10 09:44:32
【问题描述】:

我即将为 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;      
} 

感谢您的帮助。

【问题讨论】:

    标签: java eclipse multithreading debugging eclipse-plugin


    【解决方案1】:

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

    【讨论】:

    • 是的,找到了相同的解决方案并用线程替换了它。谢谢
    猜你喜欢
    • 2014-05-13
    • 2011-08-06
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多