executorservice future(如何按条件移除scheduledexecutorservice线程池中的任务)

2026-04-14 09:15:02 :0

executorservice future(如何按条件移除scheduledexecutorservice线程池中的任务)

本篇文章给大家谈谈executorservice future,以及如何按条件移除scheduledexecutorservice线程池中的任务对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

本文目录

如何按条件移除scheduledexecutorservice线程池中的任务

java中的定时器功能

在jdk1.5之前,大家都用传统的定时器Timer来实现该功能
如,我们需要定制一个特殊方法,在程序首次载入时就执行,以后每隔一定的时间去执行那个方法
传统的做法如下;

view plain copy
/**
* 定时器的测试(传统方式)
*/
public static void testTimer(){

Timer timer = new Timer();
TimerTask task = new TimerTask() {

@Override
public void run() {
System.out.println("Timer:测试开始!");
}
};
//第一个参数是要执行的任务
//第二个是程序启动后要延迟多长后执行,单位毫秒
//第三个参数是,第一次执行后,以后每隔多长时间后在行
timer.schedule(task, 5000, 3000);
}

jdk1.5出来后,我们就可以改变这种做法,换种方式
如代码:

view plain copy
/**
* 定时器的测试(ScheduledExecutorService)
*/
public static void testExcuters(){
ScheduledExecutorService service = Executors.newScheduledThreadPool(1);

service.scheduleAtFixedRate(new Runnable() {

@Override
public void run() {
System.out.println("ScheduledExecutorService:测试开始");

}
}, 5, 3,TimeUnit.SECONDS);
}

javafuture.get获得的是什么

在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java线程池ExecutorService类配合Future接口来实现。 Future接口是Java标准API的一部分,在java.util.concurrent包中。Future接口是Java线程Future模式的实 现,可以来进行异步计算。
Future模式可以这样来描述:我有一个任务,提交给了Future,Future替我完成这个任务。期间我自己可以去做任何想做的事情。一段时 间之后,我就便可以从Future那儿取出结果。就相当于下了一张订货单,一段时间后可以拿着提订单来提货,这期间可以干别的任何事情。其中Future 接口就是订货单,真正处理订单的是Executor类,它根据Future接口的要求来生产产品。
Future接口提供方法来检测任务是否被执行完,等待任务执行完获得结果,也可以设置任务执行的超时时间。这个设置超时的方法就是实现Java程 序执行超时的关键。
Future接口是一个泛型接口,严格的格式应该是Future,其中V代表了Future执行的任务返回值的类型。 Future接口的方法介绍如下:
boolean cancel (boolean mayInterruptIfRunning) 取消任务的执行。参数指定是否立即中断任务执行,或者等等任务结束
boolean isCancelled () 任务是否已经取消,任务正常完成前将其取消,则返回 true
boolean isDone () 任务是否已经完成。需要注意的是如果任务正常终止、异常或取消,都将返回true
V get () throws InterruptedException, ExecutionException  等待任务执行结束,然后获得V类型的结果。InterruptedException 线程被中断异常, ExecutionException任务执行异常,如果任务被取消,还会抛出CancellationException
V get (long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException 同上面的get功能一样,多了设置超时时间。参数timeout指定超时时间,uint指定时间的单位,在枚举类TimeUnit中有相关的定义。如果计 算超时,将抛出TimeoutException
Future的实现类有java.util.concurrent.FutureTask即 javax.swing.SwingWorker。通常使用FutureTask来处理我们的任务。FutureTask类同时又 实现了Runnable接口,所以可以直接提交给Executor执行。使用FutureTask实现超时执行的代码如下:
Java代码  
ExecutorService executor = Executors.newSingleThreadExecutor();
FutureTask future =
new FutureTask(new Callable() {//使用Callable接口作为构造参数
public String call() {
//真正的任务在这里执行,这里的返回值类型为String,可以为任意类型
}});
executor.execute(future);
//在这里可以做别的任何事情
try {
result = future.get(5000, TimeUnit.MILLISECONDS); //取得结果,同时设置超时执行时间为5秒。同样可以用future.get(),不设置执行超时时间取得结果
} catch (InterruptedException e) {
futureTask.cancel(true);
} catch (ExecutionException e) {
futureTask.cancel(true);
} catch (TimeoutException e) {
futureTask.cancel(true);
} finally {
executor.shutdown();
}
不直接构造Future对象,也可以使用ExecutorService.submit方法来获得Future对象,submit方法即支持以 Callable接口类型,也支持Runnable接口作为参数,具有很大的灵活性。使用示例如下:
Java代码  
ExecutorService executor = Executors.newSingleThreadExecutor();
FutureTask future = executor.submit(
new Callable() {//使用Callable接口作为构造参数
public String call() {
//真正的任务在这里执行,这里的返回值类型为String,可以为任意类型
}});
//在这里可以做别的任何事情
//同上面取得结果的代码
利用Future接口实现程序执行超时大致用法就这么多,改天需要研究下Future接口的内部实现,特别是设定执行超时的实现。

关于executorservice future和如何按条件移除scheduledexecutorservice线程池中的任务的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

executorservice future(如何按条件移除scheduledexecutorservice线程池中的任务)

本文编辑:admin

更多文章:


export用法搭配(export后用介词in还是from)

export用法搭配(export后用介词in还是from)

大家好,今天小编来为大家解答以下的问题,关于export用法搭配,export后用介词in还是from这个很多人还不知道,现在让我们一起来看看吧!本文目录export后用介词in还是frombgp中的import export如何混合使用英

2026年2月27日 23:30

i wrote python(python零基础自学的基本知识)

i wrote python(python零基础自学的基本知识)

大家好,如果您还对i wrote python不太了解,没有关系,今天就由本站为大家分享i wrote python的知识,包括python零基础自学的基本知识的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录pyt

2025年10月1日 20:00

java框架实现日志管理的原理步骤(java中如何使用log4j将记录的操作日志信息)

java框架实现日志管理的原理步骤(java中如何使用log4j将记录的操作日志信息)

各位老铁们好,相信很多人对java框架实现日志管理的原理步骤都不是特别的了解,因此呢,今天就来为大家分享下关于java框架实现日志管理的原理步骤以及java中如何使用log4j将记录的操作日志信息的问题知识,还望可以帮助大家,解决大家的一些

2025年9月7日 10:15

php是做网站的嘛(PHP是什么工作)

php是做网站的嘛(PHP是什么工作)

本篇文章给大家谈谈php是做网站的嘛,以及PHP是什么工作对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录PHP是什么工作网站建设PHP写比ASP好吗二者的区别在那PHP都可以开发出来什么啊为什么要学习PHPPHP是什么工作一

2025年11月28日 15:15

魔方教程图解第一面(魔方教程一步一步图解)

魔方教程图解第一面(魔方教程一步一步图解)

大家好,关于魔方教程图解第一面很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于魔方教程一步一步图解的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录魔方教

2025年9月18日 06:45

php系统编程(php编程有什么用)

php系统编程(php编程有什么用)

大家好,今天小编来为大家解答以下的问题,关于php系统编程,php编程有什么用这个很多人还不知道,现在让我们一起来看看吧!本文目录php编程有什么用什么是PHP编程开发php编程有什么用php编程有什么用?一起来了解一下吧。1、程序的编写:

2026年7月3日 12:00

int是什么意思啊音响上(汽车CD机上的英文字母各是什么意思)

int是什么意思啊音响上(汽车CD机上的英文字母各是什么意思)

各位老铁们好,相信很多人对int是什么意思啊音响上都不是特别的了解,因此呢,今天就来为大家分享下关于int是什么意思啊音响上以及汽车CD机上的英文字母各是什么意思的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录汽

2026年9月13日 08:45

mathematical音标(αβξλμ有哪些读音)

mathematical音标(αβξλμ有哪些读音)

各位老铁们,大家好,今天由我来为大家分享mathematical音标,以及αβξλμ有哪些读音的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录αβξ

2026年2月11日 15:00

过去式close(close过去分词)

过去式close(close过去分词)

今天给各位分享close过去分词的知识,其中也会对close过去分词进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录close过去分词关闭 过去式用英语怎么说close怎么读close是什么意思高中英语clos

2025年10月29日 13:00

completed是什么意思中文(level completed什么意思)

completed是什么意思中文(level completed什么意思)

大家好,今天小编来为大家解答以下的问题,关于completed是什么意思中文,level completed什么意思这个很多人还不知道,现在让我们一起来看看吧!本文目录level completed什么意思请问这句英语怎么翻译:The fi

2026年1月3日 20:15

个人网页网站模板(哪有漂亮一些的个人网页模板下载)

个人网页网站模板(哪有漂亮一些的个人网页模板下载)

大家好,个人网页网站模板相信很多的网友都不是很明白,包括哪有漂亮一些的个人网页模板下载也是一样,不过没有关系,接下来就来为大家分享关于个人网页网站模板和哪有漂亮一些的个人网页模板下载的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我

2025年6月14日 22:15

塞班系统经典游戏(塞班有什么好玩的游戏)

塞班系统经典游戏(塞班有什么好玩的游戏)

今天给各位分享塞班有什么好玩的游戏的知识,其中也会对塞班有什么好玩的游戏进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录塞班有什么好玩的游戏塞班V3系统有什么经典大一点的游戏么诺基亚塞班V3有什么好玩的游戏塞班

2025年12月16日 19:45

python读取文件相对路径(python中的绝对路径和相对路径均如何理解呢)

python读取文件相对路径(python中的绝对路径和相对路径均如何理解呢)

各位老铁们,大家好,今天由我来为大家分享python读取文件相对路径,以及python中的绝对路径和相对路径均如何理解呢的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面

2025年10月1日 15:45

rntu能组成什么单词?用runt组成一个单词

rntu能组成什么单词?用runt组成一个单词

今天给各位分享rntu能组成什么单词的知识,其中也会对rntu能组成什么单词进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录rntu能组成什么单词用runt组成一个单词rntu能组成什么单词turn英 vt.

2025年8月8日 18:00

郑州cms建站系统(国内的JAVA版CMS系统哪些比较给力)

郑州cms建站系统(国内的JAVA版CMS系统哪些比较给力)

大家好,如果您还对郑州cms建站系统不太了解,没有关系,今天就由本站为大家分享郑州cms建站系统的知识,包括国内的JAVA版CMS系统哪些比较给力的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录国内的JAVA版CM

2025年9月10日 06:45

正则表达式过滤1234(如何用正则表达式过滤除数字以外的其他字符)

正则表达式过滤1234(如何用正则表达式过滤除数字以外的其他字符)

这篇文章给大家聊聊关于正则表达式过滤1234,以及如何用正则表达式过滤除数字以外的其他字符对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录如何用正则表达式过滤除数字以外的其他字符正分数的 正则表达式怎么写 比如1/2 ;2/3

2026年2月16日 12:30

java setattribute(java 里 如何重写 httpsession 的setAttribute方法 来设置session)

java setattribute(java 里 如何重写 httpsession 的setAttribute方法 来设置session)

“java setattribute”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看java setattribute(java 里 如何重写 httpsession 的setAttribute方法 来设置session)!

2025年8月9日 08:45

用python画简单的花(pythoncircle函数画花瓣怎么计算角度)

用python画简单的花(pythoncircle函数画花瓣怎么计算角度)

大家好,关于用python画简单的花很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于pythoncircle函数画花瓣怎么计算角度的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希

2026年9月25日 13:15

phpstorm如何配置服务器(phpstorm 怎么设置http代理服务器)

phpstorm如何配置服务器(phpstorm 怎么设置http代理服务器)

本篇文章给大家谈谈phpstorm如何配置服务器,以及phpstorm 怎么设置http代理服务器对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本

2026年1月27日 20:00

sql ser数据库安装路径(我的SQL server 2000安装在c盘下,那么以后保存的数据库都是默认存在c盘下了,)

sql ser数据库安装路径(我的SQL server 2000安装在c盘下,那么以后保存的数据库都是默认存在c盘下了,)

“sql ser数据库安装路径”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看sql ser数据库安装路径(我的SQL server 2000安装在c盘下,那么以后保存的数据库都是默认存在c盘下了,)!本文目录我的SQL s

2025年11月2日 04:45

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索