RFR: 8284161: Implementation of Virtual Threads (Preview)
Daniel Fuchs
dfuchs at openjdk.java.net
Wed Apr 13 09:52:13 UTC 2022
On Tue, 12 Apr 2022 13:02:44 GMT, Alan Bateman <alanb at openjdk.org> wrote:
>> src/java.base/share/classes/java/io/BufferedReader.java line 101:
>>
>>> 99: */
>>> 100: public BufferedReader(Reader in, int sz) {
>>> 101: Objects.requireNonNull(in);
>>
>> Not sure if that even matters - but there will be a slight change of behaviour here if `InternalLock.CAN_USE_INTERNAL_LOCK` is ever `false`. Instead of synchronizing on `in`, the `BufferedReader` will synchronize on `this`.
>> Now that I think of it - it probably does matter since even if CAN_USE_INTERNAL_LOCK is true, untrusted subclasses of BufferedReader calling this constructor might expect the locking to be performed on `in`?
>
>> Not sure if that even matters - but there will be a slight change of behaviour here if `InternalLock.CAN_USE_INTERNAL_LOCK` is ever `false`. Instead of synchronizing on `in`, the `BufferedReader` will synchronize on `this`.
>
> Good! We can change this so that depends on whether BufferedReader is extended and whether the given Reader is trusted. It's not clear if anyone could reliably depend on undocumented behavior like this but we have to be cautious at the same time.
Thanks - the same issue appears with `BufferedWriter`/`Writer`.
-------------
PR: https://git.openjdk.java.net/jdk/pull/8166
More information about the core-libs-dev
mailing list