我有一个执行几个不同任务的线程。每项任务都取决于前一项任务是否成功。
如果这是我可能写的方法(长手):
public boolean outerMethod()
{
boolean success= performTask();
if(success == false)
{
return false;
}
// more processing here if success == true
}
并从outerMethod
退回到调用方,并且不再进行进一步处理
但是......
如果我在线程的run()
方法中,我会执行如下所示的操作......
如何在那里结束当前线程呢?
public void run()
{
boolean success = performTask();
if( success == false )
{
/* here is where I want to exit this thread */
}
// further processing if success == true
}
答案 0 :(得分:6)
您只需拨打return
没有值就可以提前退出void
方法。
public void run() {
boolean success = performTask();
if( success == false ){
return; //ends the thread
}
// further processing if success == true
}
答案 1 :(得分:3)
完成run()
方法的执行后,线程的执行就完成了,所以你可以正常从该方法返回,就像你在outerMethod()
中一样(尽管你只是{ {1}},因为没有返回值。)
答案 2 :(得分:2)
thread stop()。当没有进一步的工作时,使用目标而不是.thread将退出
public void run()
{
boolean success = performTask();
if(success)
{
// further processing if success == true
}
//thread will exit here
}
和旁注
使用
if(success) instead of if(success==true) and use if(!success) instead of if(success!=true)