首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Eclipse-RCP中的run方法内部终止线程

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

Stack Overflow用户
提问于 2013-07-08 13:47:55
回答 2查看 104关注 0票数 2

我在我的代码中做过类似的事情。

代码语言:javascript
运行
复制
    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方法终止线程?请提出任何建议,我怎样才能做到这一点……提前感谢....

EN

回答 2

Stack Overflow用户

发布于 2013-07-08 13:50:55

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

票数 1
EN

Stack Overflow用户

发布于 2013-07-08 14:14:21

是的,你最好的选择就是有一面旗子,

代码语言:javascript
运行
复制
boolean doWork = true;
...
while( doWork && rsMemName.next(){
...
if (doMemberTasks(memId)==false)
{
    cnn.rollback();
    doWork = false;
    return;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17519871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档