接口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();
}
}