我在我的代码中做了类似的事情
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
方法终止线程?
请给出任何建议我怎样才能实现.....
提前谢谢....
答案 0 :(得分:1)
这是因为return只会从线程运行方法返回。你可以做的是设置一个变量(flag)可能是静态的,并在运行代码之后检查它的值以放入另一个return语句。
答案 1 :(得分:1)
是的,你最好的选择是拥有一面旗帜,
boolean doWork = true;
...
while( doWork && rsMemName.next(){
...
if (doMemberTasks(memId)==false)
{
cnn.rollback();
doWork = false;
return;
}