java cancel_java – Future.cancel(boolean)方法的实用程序
我只是在探索java.util.concurrent包。
我学到类’Future’有一个方法boolean cancel(boolean mayInterruptIfRunning)
请附上我写的测试代码
package com.java.util.concurrent;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ScheduledThreadPoolExecutor;
public class FutureTester {
/**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
int poolCnt = 1;
Callable numberPrinter = null;
ScheduledThreadPoolExecutor schPool = new ScheduledThreadPoolExecutor(
poolCnt);
ScheduledFuture[] numPrinterFutures = new ScheduledFuture[poolCnt];
FutureTask[] futureTask = new FutureTask[poolCnt];
for (int i = 0; i < poolCnt; i++) {
numberPrinter = new NumberPrinter();
futureTask[i] = new FutureTask(numberPrinter);
/*
* numPrinterFutures[i] = (ScheduledFuture) schPool
* .schedule(futureTask[i], 0, TimeUnit.MILLISECONDS);
*/
numPrinterFutures[i] = (ScheduledFuture) schPool
.submit(futureTask[i]);
}
//Thread.sleep(30);
if (numPrinterFutures.length > 0) {
System.out.println("Task completed ? "
+ numPrinterFutures[0].isDone());
System.out.println("Task cancelled ? "
+ numPrinterFutures[0].cancel(true));
System.out.println("Is task cancelled ? "
+ numPrinterFutures[0].isCancelled());
}
}
}
class NumberPrinter implements Callable {
private int counter = 10;
@Override
public NumberPrinter call() throws Exception {
// TODO Auto-generated method stub
while (counter > 0) {
if (Thread.interrupted()) {/*OUCH !!!*/
return null;
}
System.out.println("counter = " + (counter--));
}
return this;
}
}
在本来,我假设取消一个任务也会停止运行的线程的执行(“OUCH”部分不包括在内)。但是我得到的输出如下:
counter = 10
Task completed ? false
counter = 9
Task cancelled ? true
counter = 8
Is task cancelled ? true
counter = 7
counter = 6
counter = 5
counter = 4
counter = 3
counter = 2
counter = 1
在进一步阅读stackoverflow本身,据说
>“取消”方法只能停止“未启动”作业(与方法的api描述相矛盾)
>取消方法只是中断正在运行的线程
必须从run()方法返回
因此,我包含了’OUCH’部分 – 一个循环检查中断;输出如下:
Task completed ? false
counter = 10
Task cancelled ? true
Is task cancelled ? true
题 :
如果应该写一些类似于“OUCH”部分的东西来停止运行的线程,那么取消方法的实用程序/值是多少。如果线程无法通过取消停止,那么如何在FutureTask中包装Callable?我俯瞰的是什么设计/概念/逻辑部分?
java cancel_java – Future.cancel(boolean)方法的实用程序相关推荐
- java cancel_Java RunnableFuture.cancel方法代码示例
import java.util.concurrent.RunnableFuture; //导入方法依赖的package包/类 @Test public void testSnapshotAsyncC ...
- Java使用Future设置方法超时
1.使用线程包 java.util.concurrent.Future 2.Future代表一个异步计算的结果. 它提供了方法来检查是否计算已经完成,还是正在计算而处于等待状态,并且也提供了获取计算结 ...
- java中Future的使用
文章目录 创建Future 从Future获取结果 取消Future 多线程环境中运行 java中Future的使用 Future是java 1.5引入的一个interface,可以方便的用于异步结果 ...
- java.io.File.setExecutable(boolean executable) 方法来设置所有者对于此抽象路径名执行权限。
java.io.File.setExecutable(boolean executable) 方法来设置所有者对于此抽象路径名执行权限. 声明 以下是 java.io.File.setExecutab ...
- timer cancel_Java Timer cancel()方法与示例
timer cancel 计时器类cancel()方法 (Timer Class cancel() method) cancel() method is available in java.util ...
- 彻底理解Java的Future模式
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_34173549/article/details/81074477 先上一个场景:假如你突然想做 ...
- JAVA并发-Future/CompletableFuture
文章目录 一.Future 1. 什么是Future 2. future如何使用 2.1 FutureTask 工具类 3. Future 接口的局限性 二.CompletableFuture 1. ...
- JAVA 拾遗 --Future 模式与 Promise 模式
JAVA 拾遗 --Future 模式与 Promise 模式 写这篇文章的动机,是缘起于微信闲聊群的一场讨论,粗略整理下,主要涉及了以下几个具体的问题: 同步,异步,阻塞,非阻塞的关联及区别. JA ...
- 【小家java】一个例子让就能你彻底理解Java的Future模式,Future类的设计思想
相关阅读 [小家java]java5新特性(简述十大新特性) 重要一跃 [小家java]java6新特性(简述十大新特性) 鸡肋升级 [小家java]java7新特性(简述八大新特性) 不温不火 [小 ...
最新文章
- 从此不再惧怕URI编码:JavaScript及C# URI编码详解
- Centos搭建SVN服务器及配置文件
- easyExcel实现Excel导出功能
- 修改页面后获得flag_逆向基础题五:获取Flag
- 性能飙升160%!阿里云发布第七代ECS、云原生数据库PolarDB-X等重磅新品 | 凌云时刻...
- 在实战中学习项目管理 --专栏《项目管理实战20讲》学习总结
- 灰色理论 光滑度处理 matlab,基于灰色理论的电子设备寿命预测研究
- 2021腾讯广告大赛学习总结
- android 多渠道覆盖,Android多渠道包
- 本命年第三季度阶段反思
- 亲戚关系关系算法java程序_亲戚换算(亲戚称谓计算器)
- ExtJS 前端 日期数据格式转化
- Windows中的环境变量一览
- 牛顿-欧拉迭代动力学算法
- Cannot enhance @Configuration bean definition ‘dataSourceConfig‘ since its singleton instanc .......
- 苹果id登录_英雄联盟手游是用苹果ID好还是拳头好 账号选择建议
- TPS62240DDCR同步降压DC-DC转换器
- Python--面向对象进阶
- 计算机安装Hp1005打印机,hp1005打印机驱动 (64)
- 用51单片机驱动蜂鸣器
热门文章
- 使用Promise链式调用解决多个异步回调的问题
- thinkphp5(tp5)中success跳转页面和弹窗问题解决
- 字符串类型日期时间转换为Date类型解析转换异常java.text.ParseException: Unparseable date: “2019-09-27T18:31:31+08:00”
- [Git]解决Permission denied, please try again问题
- 解决:百度编辑器UEditor,怎么将图片保存到图片服务器,或者上传到ftp服务器的问题(如果你正在用UE,这篇文章值得你看下)
- 如何使用cURL一次测量请求和响应时间?
- 在razor视图引擎中转义@字符
- linux查看绑定ipv6的端口号,[原创]如何在windows和linux绑定IPV6
- Python基础-高级变量类型
- vscode jupyter补全_Cern ROOT 在jupyter里的使用