十丿四 2015-09-22 12:09 采纳率: 100%
浏览 3686
已采纳

java 中 ScheduledExecutorService 创建的多线程和 runnable

今天用到用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 这两个之间的区别。和他们之间的差异、和使用场景

  • 写回答

2条回答 默认 最新

  • snailplus 2015-09-22 14:19
    关注

    Rrunnable是线程类需要实现的接口,scheduledExecutorService是管理一堆线程对象的可选工具。
    不使用scheduledExecutorService的话,一些线程控制操作需要自己完成,一个线程还好说,多个线程并行的情况就比较麻烦。
    多线程控制操作比如:
    (1)等待或判断所有线程执行完
    (2)立刻中断所有线程
    (3)线程队列实现,通过设定,可以限制同时(并行)执行的任务数,多余的任务等待执行。
    例子:有7个任务,限定并行数为3
    只有3个任务能同时执行,剩余任务等待执行,3个并行任务中1个执行完毕时,立刻从等待任务中取一个去执行,直到所有任务执行完。
    这个过程中,所有时间点上有且仅有3个任务在运行,保证效率的同时,也很好控制了内存使用。

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多