java cancel_java future.cancel方法是不是直接杀死线程

publicclassTestThread{publicstaticvoidmain(String[]args)throwsInterruptedException,ExecutionException{ExecutorServiceext=Executors.newFixedThreadPool(1);Futurefut...

public class TestThread {

public static void main(String[] args) throws InterruptedException, ExecutionException{

ExecutorService ext=Executors.newFixedThreadPool(1);

Future future3=ext.submit(new Callable(){

public String call(){

int i=0;

while(i<10){

System.out.println("callable3 running......");

try {

Thread.sleep(3000);

i++;

} catch (InterruptedException e) {

System.out.println("Interrupted task.");

}

}

return "callable3 running";

}

});

Thread.sleep(100);

System.out.println("callable3 cancel=" + future3.cancel(true));

System.out.println("callable3 over");

ext.shutdown();

}

}

返回结果是:

callable3 running......

callable3 cancel=true

callable3 over

Interrupted task.

callable3 running......

callable3 running......

callable3 running......

callable3 running......

callable3 running......

callable3 running......

callable3 running......

callable3 running......

callable3 running......

callable3 running......

执行了cancle()方法,为啥还是把while循环执行完毕了呢?如果将try/catch模块放在while的外层,确实是只执行一次,System.out.println("callable3 running......");。cancel方法不是直接杀死线程的吗?

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值