java - 在Java中退出我自己的线程

标签 java multithreading

好的,我下面有以下代码

public static void StartDayProcessor(){
        new Thread(new Runnable() {
            public void run() {
                long lastSec = 0;
                while(DayProcessor.isDayProcessorActive){
                    long sec = System.currentTimeMillis() / 1000;
                    if (sec != lastSec) {
                        DayProcessor.secondsActive++;
                        DayProcessor.timeLeftInSecs = DayProcessor.day.getTimeLimitInSecs() - DayProcessor.secondsActive;
                        System.out.println("Seconds left for this day: " + DayProcessor.timeLeftInSecs);
                        if(DayProcessor.timeLeftInSecs == 0){
                            DayProcessor.isDayProcessorActive = false;
                            break;
                            //exit my own thread here!!
                        }
                    }
                }

            }
        });
    }

上面的代码位于我更大的代码中,但我想知道如何通过在线程本身内部运行代码来停止线程运行。我怎样才能阻止它?

最佳答案

停止线程的两种方法,一种是您已经通过条件逻辑和 break/return 使用的方法:

DayProcessor.isDayProcessorActive = false;
break;//return;

另一种方法是使用中断:

while(!Thread.currentThread.isInterrupted()) {
     ... logic
     if(condition) {
         Thread.interrupt();
     }
}

关于java - 在Java中退出我自己的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17462817/

相关文章:

c - 静态互斥和多线程

java - for循环生成的多线程不能使用synchronized吗?

java - 对于 1 个列表成员,DVM 中未抛出 ConcurrentModificationException

java - 删除给定标签后的所有元素

java - this.mCtx 和 mCtx Android 之间的区别

java - 绿色线程与非绿色线程

Perl:终止线程并获得迄今为止最好的结果

java - 清理线程池的问题

java - Android - Node.getNodeValue() 在存在 ' 时被截断

java - Spring中的NotWritablePropertyException错误