Although this enhancement to java.lang.Thread has not been
shouted down, I have not heard any other comments, either.
It proposes (1) a built-in orderly way to inform a thread to
terminate itself and (2) a way to contol suspend/resume of
a thread.

All critique is welcome.


Dan Lydick

> 

> > [Original Message]

> > From: Noel J. Bergman <[EMAIL PROTECTED]>

> > To: <[EMAIL PROTECTED]>

> > Cc: <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>;

> <[EMAIL PROTECTED]>

> > Date: 10/25/04 10:19:05 AM

> > Subject: Sun wants Apache input on JDK futures

> >

> > Sun is the final stages of collecting requirements for the releases that

> > will follow Tiger, which means the next 3 years.  So here's your chance
to

> > tell Sun what you would like to see in J2SE versions 6 and 7.  Once we

> > gather all of the ideas, we can try to see if we can prioritize the
list.

> > 

...snip...
> > 

> > --- Noel

> > 

> My $0.02 worth, having just gotten started w/ JDK 1.5, but don't

> see these related features available:

>  

> 1.  The new java.lang.Thread.State class adds the capability to determine

>     the current state of a given java.lang.Thread.  However, the Thread

>     class also needs to have a built-in equivalent to a mechanism that

>     must currently be supplied by the user.  In the bad old days,

>     you used Thread.stop() to kill a thread.  However, that would leave

>     resource locks in place.  Therefore, the common wisdom became for

>     the user to declare a boolean that the thread could periodically poll

>     and shut itself down in an ordered fashion after releasing resource

>     locks and any other cleanup.

>  

>     I would like to see a mechanism built into java.lang.Thread that would

>     to this on a language-wide basis.  Perhaps a method with a parameter

>     called 'Thread.setRequestedState(Thread.State reqState)' where a

> shutdown

>     would call 'Thread.setRequestedState(Thread.State.TERMINATED)'.  When

> that

>     thread polls the requested state value (perhaps using a 'private

> ThreadState

>     requestedState') using a method 'Thread.getRequestedState()', then it

> could

>     initiate its shutdown sequence.

>  

> 2.  This is similar to the suggestion from Stefano Mazzocchi about

>     suspending a thread and resuming.  In this case, a thread could

>     be suspended by doing a
'Thread.setRequestedState(Thread.State.WAITING)'

>     followed by an un-suspend with

> 'Thread.setRequestedState(Thread.State.RUNNABLE)'.

>     This would be functionally equivalent to Thread.notify()/notifyAll(),

> but

>     would be thread-specific, not setting the state of some random thread
or

>     all threads.  I say that is a syntactic improvement because

> Thread.notify()

>     never tells the casual reader what thread will be made RUNNABLE again,

> even

>     if there is only one possible thread that could get so marked.

>  

>     The full prototypes would be, for get req state:

>     Thread.State getRequestedState()

>     boolean setRequestedState(Thread.State newState) throws

> IllegalArgumentException

>  

>     When setRequestedState() succeeded, it would return 'true'.  If it
could

>     not set that state, it would return 'false'.  If anything but

> TERMINIATED, 

>     WAITING, or RUNNABLE were requested, it would throw

> IllegalArgumentException.

>  

>     Notice the distinct resemblance to '(Thread.State) Thread.getState()'.

>     This returned the _current_ state, where the above discussion sets and

>     gets the _requested_ state.  Notice that, again refering to Mr.

> Mazzocchi's

>     post, this approach would also work with JNI.  All that is required is

>     for the JVM to accept the requested states TERMINATED, WAITING, and

> RUNNABLE.

>  

>  

> 

> Dan Lydick

> 





---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to