Summary
-------
To match its abstract specification, change the default implementation of `com.sun.management.ThreadMXBean.getCurrentThreadAllocatedBytes` to return the value of ` getThreadAllocatedBytes(Thread.currentThread().getId())`.
Problem
-------
The existing default implementation of `com.sun.management.ThreadMXBean.getCurrentThreadAllocatedBytes` is to throw `UnsupportedOperationException`, which is permitted but doesn't match the abstract specification of the method.
Solution
--------
Change the default implementation of `com.sun.management.ThreadMXBean.getCurrentThreadAllocatedBytes` to return the value of ` getThreadAllocatedBytes(Thread.currentThread().getId())`.
Remove the `@implSpec` portion of the Javadoc that described the throwing of the exception.
Specification
-------------
```
/**
* Returns an approximation of the total amount of memory, in bytes,
* allocated in heap memory for the current thread.
* The returned value is an approximation because some Java virtual machine
* implementations may use object allocation mechanisms that result in a
* delay between the time an object is allocated and the time its size is
* recorded.
*
* <p>
* This is a convenience method for local management use and is
* equivalent to calling:
* <blockquote><pre>
* {@link #getThreadAllocatedBytes getThreadAllocatedBytes}(Thread.currentThread().getId());
* </pre></blockquote>
*
-* @implSpec The default implementation throws
-* {@code UnsupportedOperationException}.
-*
* @return an approximation of the total memory allocated, in bytes, in
* heap memory for the current thread
* if thread memory allocation measurement is enabled;
* {@code -1} otherwise.
*
* @throws java.lang.UnsupportedOperationException if the Java virtual
* machine implementation does not support thread memory allocation
* measurement.
*
* @see #isThreadAllocatedMemorySupported
* @see #isThreadAllocatedMemoryEnabled
* @see #setThreadAllocatedMemoryEnabled
* @since 14
*/
public default long getCurrentThreadAllocatedBytes() {
return getThreadAllocatedBytes(Thread.currentThread().getId());
}
```