我在我的代码中做过类似的事情。
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方法终止线程?请提出任何建议,我怎样才能做到这一点……提前感谢....
发布于 2013-07-08 13:50:55
这是因为return只会从线程run方法返回。您可以做的是设置一个变量(标志),可能是静态的,并在运行代码后检查它的值,以放置另一个返回语句。
发布于 2013-07-08 14:14:21
是的,你最好的选择就是有一面旗子,
boolean doWork = true;
...
while( doWork && rsMemName.next(){
...
if (doMemberTasks(memId)==false)
{
cnn.rollback();
doWork = false;
return;
}https://stackoverflow.com/questions/17519871
复制相似问题