在Eclipse-RCP中从其内部终止线程的run方法

时间:2013-07-08 05:47:55

标签: java eclipse-rcp rcp jobs

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

    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();
}

如果exit返回false,我想从整个方法做doMemberTasks(memId) 但它不是return方法,而是在ResultSet上循环。如何从run方法终止线程? 请给出任何建议我怎样才能实现..... 提前谢谢....

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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