接口scheduleAtFixedRate原型定义及参数说明:
public ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit);
command:执行线程
initialDelay:初始化延时
period:两次开始执行最小间隔时间
unit:计时单位
接口scheduleWithFixedDelay原型定义及参数说明:
public ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit);
代码示例:
ScheduledExecutorService mExecutorService; ScheduledFuture mFuture1, mFuture2; private void executScheduledExecutorService() { mExecutorService = Executors.newScheduledThreadPool(1); mFuture1 = mExecutorService.scheduleAtFixedRate(new EchoServer(), 1000, 1000, TimeUnit.MILLISECONDS); mExecutorService.schedule(new Runnable() { @Override public void run() { // TODO Auto-generated method stub Log.i("W", "shut down."); mExecutorService.shutdownNow(); } }, 40, TimeUnit.SECONDS); } class EchoServer implements Runnable { @Override public void run() { // TODO Auto-generated method stub a++; Log.i("W", "a = " + a); if (a == 10) { mFuture1.cancel(false); } if (a == 2) { mFuture2 = mExecutorService.scheduleAtFixedRate(new EchorServer(), 1000, 2000, TimeUnit.MILLISECONDS); } } } class EchorServer implements Runnable { @Override public void run() { // TODO Auto-generated method stub b++; Log.i("W", "b = " + b); if (b == 15) { mFuture2.cancel(false); } } }
@Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); if (mExecutorService != null) { mExecutorService.shutdownNow(); } }