【问题标题】:Terminating thread from inside it's run method in Eclipse-RCP从 Eclipse-RCP 中的 run 方法内部终止线程
【发布时间】:2013-07-05 09:15:50
【问题描述】:

我在我的代码中做了类似的事情

    public void doWork()
    {
            Job job = new Job("Job")
            {
              @Override
              protected IStatus run(IProgressMonitor monitor) {
                 while (rsMemName.next()) {
                    Display.getDefault().syncExec(new Runnable() {
                    @Override
                    public void run() {
                        try {
                        String memId = rsMemName.getString("id");
                        if (doMemberTasks(memId)==false)
                        {
                           cnn.rollback();
                           return;
                        }
                        } catch (Exception ex) {
                           ex.printStackTrace();                                
                        try {
                           cnn.rollback();
                           return;
                        } catch (SQLException e) {
                          e.printStackTrace();
                        }
                    }
                });
             }
            }
          }
          job.schedule();
}

如果doMemberTasks(memId) 返回 false,我想要做的是整个方法中的exit
但它不是来自方法的return,而是在ResultSet 上继续循环。如何从run 方法终止线程? 请提出任何建议我怎么能做到这一点...... 提前谢谢....

【问题讨论】:

    标签: java eclipse-rcp rcp jobs


    【解决方案1】:

    这是因为 return 只会从线程 run 方法返回。您可以做的是设置一个可能是静态的变量(标志),并在运行代码之后检查其值以放置另一个返回语句。

    【讨论】:

    • 感谢您的回答...我去看看...没有其他选择吗??
    【解决方案2】:

    是的,最好的选择是拥有一面旗帜,

    boolean doWork = true;
    ...
    while( doWork && rsMemName.next(){
    ...
    if (doMemberTasks(memId)==false)
    {
        cnn.rollback();
        doWork = false;
        return;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-12
      • 2020-09-10
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多