On Thu, 26 Oct 2023 22:34:24 GMT, Leonid Mesnik <[email protected]> wrote:
>> test/jtreg_test_thread_factory/src/share/classes/Virtual.java line 37:
>>
>>> 35: // The virtual threads don't belong to any group and need
>>> global handler.
>>> 36: Thread.setDefaultUncaughtExceptionHandler((t, e) -> {
>>> 37: if (e instanceof ThreadDeath) {
>>
>> `ThreadDeath` has been deprecated for removal since Java 20, so this should
>> no longer be needed.
>
> It is still used in tests and we should ignore it like jtreg doing.
Shouldn't this code first retrieve the current default exception handler, and
then check whether t is a virtual thread, and if so handle the exception as
appropriate (not sure System.exit is appropriate ..). Then for non-virtual
threads it delegates to the previous default handler.
final UncaughtExceptionHandler originalUEH =
Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler((t, e) -> {
if (t.isVirtual()) {
// ...
} else {
originalUEH.uncaughtException(t, e);
}
});
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/16369#discussion_r1374102902