Future.cancel不保证您的工作程序代码将停止执行。它的作用是设置中断标志,并导致任何阻塞的JDK调用都抛出InterruptedException。您的工作程序代码可以选择重新抛出被中断的异常并定期检查被中断的标志,在这种情况下,取消机制将起作用。否则,您可以选择吞下InterruptedException而不理会iterrupted标志,在这种情况下,cancel机制将不执行任何操作,只能将canceled标志设置为true。
参见http://www.ibm.com/developerworks/library/j-jtp05236/



