> On Dec 4, 2015, at 8:56 AM, Roger Riggs <roger.ri...@oracle.com> wrote:
> 
> 
> [1] http://cr.openjdk.java.net/~rriggs/webrev-cleaner-8138696/
> [2] http://cr.openjdk.java.net/~rriggs/cleaner-doc/index.html

  67  * Unless otherwise noted, passing a {@code null} argument to a 
constructor or
  68  * method in any class or interface in this package will cause a

s/in any class or interface in this package/in this class/

 100      * Returns a new Cleaner.
s/Cleaner/{@code Cleaner}

For the create() factory method: should it prepare for future optimization 
(e.g. returning a shared Cleaner object, or multiple Cleaner object sharing 
among one or more dedicated threads)?   Would it be better not to require a new 
thread be created and also “Return a Cleaner” instead of “a new Cleaner”.

 105      * of the thread is set to the system class loader.

  - can you add a link to ClassLoader#getSystemClassLoader

 106      * The thread has no permissions, enforced only if a
 107      * {@link java.lang.System#setSecurityManager(SecurityManager) 
SecurityManager is set}.

I realized I didn’t bring this up in my previous comment.  I meant to say that 
it may be fine not to mention about “inherited ACC” and permissions.  I 
included that sentence just in case there is a reason it needs.  I am not aware 
of any specification talking about the inherited ACC of a newly created thread. 
  This sentence can be removed.  Maybe you can add a @apiNote to explain it.

> Which brings up a gap in the specification of create() that it can throw 
> exceptions related
> to creation and starting of threads, including SecurityExceptions, 
> IllegalThreadStateException, etc.

Regarding the exceptions if threadFactory.newThread returns a started thread, 
@throws IllegalThreadStateException is a good one and I think that’s all.  A 
new thread implies “not started” - perhaps adding a link to Thread.State.NEW.  
I did look at whether the security exception will be thrown and I don’t see 
any.  You should double check. 

Cleanable is missing @since 9

 164      * Cleanable is a registered cleaning function.

I read “thunk” passed to Cleaner::register is the “registered cleaning 
function”.  What about: 

{@code Cleanable} represents the object and its associated cleaning function 
registered in a {@code Cleaner}

Mandy

Reply via email to