包含scheduledexecutorservice的词条

http://www.itjxue.com  2023-01-05 21:32  来源:未知  点击次数: 

Executors之ScheduledThreadExecutor

ScheduledThreadPoolExecutor 继承自ThreadPoolExecutor实现了ScheduledExecutorService接口。主要完成定时或者周期的执行线程任务。

执行过程:

(1) scheduledExecutorService.schedule(myThread, 5, TimeUnit.SECONDS)

结果:

可以看出主线程启动子线程:scheduledExecutorService.schedule(myThread, 5, TimeUnit.SECONDS)后5S开始thread0,1,2开始执行。 scheduledExecutorService.shutdown();//7s 后关闭不再接受执行线程。shutdown()表示scheduledExecutorService关闭不再接受新的线程执行(如果线程已经开始,则等待此线程结束)这里如果没有 Thread.sleep(70000);则所有线程不会执行。while (!scheduledExecutorService.isTerminated()) {//all thread等待结束 这里是主线程等待所有的子线程结束

}

(2)scheduledExecutorService.scheduleWithFixedDelay(myThread, 5, 2, TimeUnit.SECONDS);

结果:

可以看出线程开始延时5后首次执行,以后每隔2S周期执行任务。

scheduledexecutorservice怎么读

英文原文:

schedule dexecutor service

英式音标:

[??edju?l; ?sked-] dexecutor [?s??v?s]

美式音标:

[?sk?d?ul] dexecutor [?s?v?s]

java 中 ScheduledExecutorService 创建的多线程和 runnable

Rrunnable是线程类需要实现的接口,scheduledExecutorService是管理一堆线程对象的可选工具。

不使用scheduledExecutorService的话,一些线程控制操作需要自己完成,一个线程还好说,多个线程并行的情况就比较麻烦。

多线程控制操作比如:

(1)等待或判断所有线程执行完

(2)立刻中断所有线程

(3)线程队列实现,通过设定,可以限制同时(并行)执行的任务数,多余的任务等待执行。

例子:有7个任务,限定并行数为3

只有3个任务能同时执行,剩余任务等待执行,3个并行任务中1个执行完毕时,立刻从等待任务中取一个去执行,直到所有任务执行完。

这个过程中,所有时间点上有且仅有3个任务在运行,保证效率的同时,也很好控制了内存使用。

ps:Java中,实现线程类的接口和类有三个:Runnable(接口),Callable(接口),Thread(类)

(责任编辑:IT教学网)

更多

推荐服务器空间文章