On Tue, 28 Feb 2023 21:06:19 GMT, Mandy Chung <mch...@openjdk.org> wrote:
>> Alan Bateman has updated the pull request with a new target base due to a >> merge or a rebase. The incremental webrev excludes the unrelated changes >> brought in by the merge/rebase. The pull request contains five additional >> commits since the last revision: >> >> - Clarify Thread CPU time seciton of spec >> - Merge >> - Fix minimal build >> - Fix minimal build >> - Initial commit > > test/jdk/java/lang/management/ThreadMXBean/VirtualThreads.java line 258: > >> 256: long tid = Thread.currentThread().threadId(); >> 257: long cpuTime = bean.getThreadCpuTime(tid); >> 258: assertEquals(-1L, cpuTime); > > Am I correct that `getThreadCpuTime(tid)` returns -1 for the current thread > is a virtual thread whereas `getCurrentThreadCpuTime` throws UOE in the > current implementation? > > `getCurrentThreadCpuTime` is specified to be equivalent to calling > `getThreadCpuTime(Thread.currentThread().threadId()`. We didn't get this quite right in JDK 19 but I think I've fixed all those issues now. So assuming the VM supports CPU time for all platform threads, it means: - isThreadCpuTimeEnabled and isCurrentThreadCpuTimeSupported will return true. - If getThreadCpuTime(long) is called with the thread ID of a virtual thread then -1 will be returned. - If getCurrentThreadCpuTime() is called from a virtual thread then -1 will be returned. I did another pass over the API docs, update the "Thread CPU time" section, so I hope it is clearer now. ------------- PR: https://git.openjdk.org/jdk/pull/12762