Java中断或退出线程

时间:2014-10-22 13:51:13

标签: java multithreading

我有一个执行几个不同任务的线程。每项任务都取决于前一项任务是否成功。

如果这是我可能写的方法(长手):

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
}

3 个答案:

答案 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)