还在手写循环线程?就用他(ScheduledExecutorService),优雅点!
优点:
最大优点除了线程池的特性以外,可以实现循环或延迟任务。
下面部分内容引用该博客:ScheduledExecutorService的使用
引用博客内容 |
---|
ScheduledExecutorService 和 Timer 的区别
Timer的内部只有一个线程,如果有多个任务的话就会顺序执行,这样我们的延迟时间和循环时间就会出现问题。
ScheduledExecutorService是线程池,所以就不会出现这个情况,在对延迟任务和循环任务要求严格的时候,就需要考虑使用ScheduledExecutorService了。
ScheduledExecutorService的用法主要有三个:
public class MainActivity extends AppCompatActivity {
// 通过静态方法创建ScheduledExecutorService的实例
private ScheduledExecutorService mScheduledExecutorService = Executors.newScheduledThreadPool(4);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 延时任务
mScheduledExecutorService.schedule(threadFactory.newThread(new Runnable() {
@Override
public void run() {
Log.e("lzp", "first task");
}
}), 1, TimeUnit.SECONDS);
// 循环任务,按照上一次任务的发起时间计算下一次任务的开始时间
mScheduledExecutorService.scheduleAtFixedRate(