我无法用 if 语句停止线程

I couldn't stop thread with if statement

下面是我的代码

class SecondTextViewTask extends Thread {
        @Override
        public void run() {
            while (true) {
                if (semaphore.availablePermits() == 0 && firstTextDigit <= 9 && secondTextDigit <= 9) {
                    try {
                        Thread.sleep(1000);

                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                secondTextDigit++;
                                secondDigit.setText(String.valueOf(secondTextDigit));
                                Log.e("Test== ", "" + secondTextDigit + " " + semaphore.availablePermits());
                                if (secondTextDigit == 9) {
                                    semaphore.release();
                                }
                            }
                        });

                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }  

首先,我从 0 开始信号量,在 secondTextDigit(integer) 到达 9 后释放信号量,此任务必须停止。但是当我使用 Log.e 时,我可以在我的 Logcat secondTextDigit=10 和我的信号量=1 上看到。在这种情况下,if 语句如何工作并进入内部?我的逻辑错误在哪里?
(secondDigit 是 TextView。)

您最初的 if 声明检查了这一点:

semaphore.availablePermits() == 0 && firstTextDigit <= 9 && secondTextDigit <= 9

这对secondTextDigit == 9有效。

然后您调用 secondTextDigit++。如果 secondTextDigit == 9,则 secondTextDigit 变为 10。

最后,你释放信号量的条件是secondTextDigit == 9,如果secondTextDigit是10,它就会是假的,你就卡住了。