finalize()が10秒の問題シミュレーションの反復後にタイムアウトしました

public class Apple {
    @Override
    protected void finalize() throws Throwable {
        super.finalize();
        Thread.sleep(130*1000);
    }
}

実際にA ppleオブジェクトを作成します。

 

C rashハンドラーでの例外のインターセプト

import android.util.Log;

import androidx.annotation.NonNull;

import java.util.concurrent.TimeoutException;

public class Te implements Thread.UncaughtExceptionHandler {

    @Override
    public void uncaughtException(@NonNull Thread thread, @NonNull Throwable ex) {
        if (thread.getName().equals("FinalizerWatchdogDaemon") && (ex instanceof TimeoutException  || ex.getMessage().contains("timed out"))) {
            return; //Ignore
        }
    }
}

2つの例外、つまりRuntimeExceptionとTimeoutExceptionが報告されます

uncaughtException thread.getName FinalizerWatchdogDaemon ## ex.getMessage(.Apple.finalize()が10秒後にタイムアウトしました## ex.getClass()。getName()java.util.concurrent.TimeoutException

uncaughtException thread.getName FinalizerWatchdogDaemon ## ex.getMessage(java.util.concurrent.TimeoutException:.Apple.finalize()が10秒後にタイムアウトしました## ex.getClass()。getName()java.lang.RuntimeException

おすすめ

転載: blog.csdn.net/wuzhong8809/article/details/107815931