On 02/17/2016 10:06 AM, Peter Levart wrote:
On 02/17/2016 01:20 AM, Kim Barrett wrote:
src/java.base/share/classes/jdk/internal/ref/CleanerImpl.java
I don't understand why CleanerImpl needs to be changed to public in
order to provide access to the new drainQueue. Wouldn't it be better
to add Cleaner.drainQueue?
An interesting idea. But I don't know if such functionality is
generally useful enough to commit to it in a public API.
I have another idea where java.lang.ref.Cleaner would use an Executor
instead of ThreadFactory. The default would be an instance of a
single-threaded executor per Cleaner instance, but if user passed in a
ForkJoinPool, he could use it's method ForkJoinPool.awaitQuiescence()
to help the executor's thread(s) do the cleaning.
...well, this would not be a good idea as ReferenceHandler thread would
then have to feed the Executor (invoke Executor::execute(Runnable)) and
a user-specified Executor could abuse that. There has to be a queue API
between ReferenceHandler and custom user code.
Regards, Peter