<div dir="ltr">My ignorance made me surprised that this wasn't the default of the Thread.interrupt method.<div><br></div><div>Cheers,</div><div>√</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Oct 2, 2013 at 7:02 PM, Doug Lea <span dir="ltr"><<a href="mailto:dl@cs.oswego.edu" target="_blank">dl@cs.oswego.edu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On 10/02/2013 12:29 PM, Martin Buchholz wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
FutureTask.cancel(true) invokes thread.interrupt on the thread (if any)<br>
currently running the task.<br>
This should succeed even if modifyThread permission is denied by the security<br>
manager.<br>
<br>
</blockquote>
<br></div>
We haven't interpreted "should" in this way in the past here or in<br>
related contexts, but I don't see are reason not to, pending any<br>
objections by security folks.<br>
<br>
-Doug<br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
Here's a proposed fix for jdk8+:<br>
<br></div>
--- src/main/java/util/concurrent/<u></u>FutureTask.java15 May 2013 02:39:59 -00001.103<br>
+++ src/main/java/util/concurrent/<u></u>FutureTask.java2 Oct 2013 16:25:23 -0000<div class="im"><br>
@@ -132,6 +132,12 @@<br>
return state != NEW;<br>
}<br>
+ private static void privilegedInterrupt(Thread t) {<br>
+ java.security.<u></u>PrivilegedAction<Void> doInterrupt =<br>
+ () -> { t.interrupt(); return null; };<br>
+ java.security.<u></u>AccessController.doPrivileged(<u></u>doInterrupt);<br>
+ }<br>
+<br>
public boolean cancel(boolean mayInterruptIfRunning) {<br>
if (!(state == NEW &&<br>
UNSAFE.compareAndSwapInt(this, stateOffset, NEW,<br>
@@ -142,7 +148,11 @@<br>
try {<br>
Thread t = runner;<br>
if (t != null)<br>
- t.interrupt();<br>
+ try {<br>
+ t.interrupt();<br>
+ } catch (SecurityException e) {<br>
+ privilegedInterrupt(t);<br>
+ }<br>
} finally { // final state<br>
UNSAFE.putOrderedInt(this, stateOffset, INTERRUPTED);<br>
}<br>
<br>
<br>
<br></div><div class="im">
______________________________<u></u>_________________<br>
Concurrency-interest mailing list<br>
<a href="mailto:Concurrency-interest@cs.oswego.edu" target="_blank">Concurrency-interest@cs.<u></u>oswego.edu</a><br>
<a href="http://cs.oswego.edu/mailman/listinfo/concurrency-interest" target="_blank">http://cs.oswego.edu/mailman/<u></u>listinfo/concurrency-interest</a><br>
<br>
</div></blockquote><div class="HOEnZb"><div class="h5">
<br>
______________________________<u></u>_________________<br>
Concurrency-interest mailing list<br>
<a href="mailto:Concurrency-interest@cs.oswego.edu" target="_blank">Concurrency-interest@cs.<u></u>oswego.edu</a><br>
<a href="http://cs.oswego.edu/mailman/listinfo/concurrency-interest" target="_blank">http://cs.oswego.edu/mailman/<u></u>listinfo/concurrency-interest</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><span style="border-collapse:separate;color:rgb(0,0,0);font-family:Times;font-variant:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-size:medium"><span style="font-family:arial;font-size:small"><span style="border-collapse:collapse;font-family:arial,sans-serif;font-size:13px"><b style="font-style:normal">Viktor Klang</b><br>
<i>Director of Engineering</i></span></span></span><div><span style="border-collapse:separate;color:rgb(0,0,0);font-family:Times;font-variant:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-size:medium"><span style="font-family:arial;font-size:small"><div style="font-style:normal;font-weight:normal">
<font face="arial, sans-serif"><span style="border-collapse:collapse"><a href="http://www.typesafe.com/" target="_blank">Typesafe</a></span></font></div><div style="font-style:normal;font-weight:normal"><font face="arial, sans-serif"><span style="border-collapse:collapse"><br>
</span></font><font face="arial, sans-serif"><span style="border-collapse:collapse">Twitter: @viktorklang</span></font></div></span></span></div></div>
</div>