Ik heb een vraagje over een ontwerp kwestie over stoppen thread. het Thread.stop() commando is depricated:
This method is inherently unsafe. Stopping a thread with
Thread.stop causes it to unlock all of the monitors that it
has locked (as a natural consequence of the unchecked
ThreadDeath exception propagating up the stack). If
any of the objects previously protected by these monitors were in
an inconsistent state, the damaged objects become visible to
other threads, potentially resulting in arbitrary behavior. Many
uses of stop should be replaced by code that simply
modifies some variable to indicate that the target thread should
stop running. The target thread should check this variable
regularly, and return from its run method in an orderly fashion
if the variable indicates that it is to stop running. If the
target thread waits for long periods (on a condition variable,
for example), the interrupt method should be used to
interrupt the wait.
Oke, dit snap ik
Maar stel dat niet de mogelijkheid heb om in de run methode te gaan kijken naar die variable? Bijvoorbeeld: ik roep een tijdsconsumerende routine aan in een api (in mijn geval in een gegenereerde routine) en daar kan ik niet kijken naar die variable (omdat de source elke keer gegenereerd wordt of omdat je geen toegang tot de source hebt). Hoe zou ik dit probleem moeten fixen?
This method is inherently unsafe. Stopping a thread with
Thread.stop causes it to unlock all of the monitors that it
has locked (as a natural consequence of the unchecked
ThreadDeath exception propagating up the stack). If
any of the objects previously protected by these monitors were in
an inconsistent state, the damaged objects become visible to
other threads, potentially resulting in arbitrary behavior. Many
uses of stop should be replaced by code that simply
modifies some variable to indicate that the target thread should
stop running. The target thread should check this variable
regularly, and return from its run method in an orderly fashion
if the variable indicates that it is to stop running. If the
target thread waits for long periods (on a condition variable,
for example), the interrupt method should be used to
interrupt the wait.
Oke, dit snap ik