用ScheduledExecutorService
做定时任务,发现里面可以做多线程的操作。使用起来也很方便。
直接new 个实例就可以了。
`ScheduledExecutorService executor = Executors
.newScheduledThreadPool(10);
for (int i = 0; i < 10; i++) {
executor.scheduleAtFixedRate(new pop(), 0, 500,
TimeUnit.MILLISECONDS);
}`
在for循环一个方法就可以了。
和以前使用runnable相比来说,结构简单点,并且使用也很方便。
想了解下scheduledExecutorService
和runnable
这两个之间的区别。和他们之间的差异、和使用场景
Rrunnable
是线程类需要实现的接口,scheduledExecutorService
是管理一堆线程对象的可选工具。
不使用scheduledExecutorService
的话,一些线程控制操作需要自己完成,一个线程还好说,多个线程并行的情况就比较麻烦。
多线程控制操作比如:
(1)等待或判断所有线程执行完
(2)立刻中断所有线程
(3)线程队列实现,通过设定,可以限制同时(并行)执行的任务数,多余的任务等待执行。
例子:有7个任务,限定并行数为3
只有3个任务能同时执行,剩余任务等待执行,3个并行任务中1个执行完毕时,立刻从等待任务中取一个去执行,直到所有任务执行完。
这个过程中,所有时间点上有且仅有3个任务在运行,保证效率的同时,也很好控制了内存使用。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。