线程退出回调

Nic*_*cht 7 java thread-safety

我需要能够为当前运行的线程注入一些退出代码.我已经在这个问题上挣扎了一段时间,我终于找到了一个解决方案,这里有一些类似于我正在做的代码:

public static void injectThreadExitCallback(final Runnable callback) {
    final curr = Thread.currentThread();
    new Thread() {
        @Override
        public void run() {
            try {
                curr.join();
                callback.run();
            } catch (InterruptedException ex) {
                ... logging ...
            }
        }
    }.start();
}
Run Code Online (Sandbox Code Playgroud)

它看起来工作正常并完全符合我的要求,我唯一担心的是,如果这导致任何泄漏或其他不良副作用,我可能不会看到.

或者这是完全没问题,如果是这样的话,这非常有用.我可以看到一个简单的库,可以动态地将退出代码添加到现有线程.

Mik*_*rov 5

你最好这样做

new Thread () {
    @Override
    public void run () {
        try
        {
            // Thread logic here
        }
        finally
        {
            // Thread exit logic here
        }
    }
}.start ();
Run Code Online (Sandbox Code Playgroud)