- 这是一个可以根据时间对线程进行调度的线程池,直接看示例
public class AddThread implements Runnable{
int sum=0;
@Override
synchronized public void run() {
System.out.println(Thread.currentThread().getName()+":"+System.currentTimeMillis()/1000);
// TODO Auto-generated method stub
for(int i=1;i<=1000;i++)
{
sum++;
}
}
}
主函数
public class ScheSerDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
ScheduledExecutorService ses=Executors.newScheduledThreadPool(10);
AddThread add=new AddThread();
ses.scheduleAtFixedRate(add, 0, 2, TimeUnit.SECONDS); //没有延迟,2s执行一次任务
ses.scheduleAtFixedRate(add, 1, 2, TimeUnit.SECONDS); //1s后开始执行任务,2s执行一次
//由时间分析可得任务1执行三次,任务2执行2次,故sum=5000
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(add.sum);
}
}