//ExecutorService threadPool= Executors.newFixedThreadPool(3);//得到固定大小的线程池,线程个数为3个
//ExecutorService threadPool= Executors.newCachedThreadPool();//缓存线程池(线程数动态变化),当任务过来服务不过来时,自动增加线程个数来执行任务
/*ExecutorService threadPool= Executors.newSingleThreadExecutor();//单例线程池,线程池中只有一个线程,如果线程池中的线程死亡,就会自动再找一个替补,保证有一个线程--如何实现线程死亡后重新启动(找替补)
for(int j=1;j<=10;j++){
final int task=j;//处理final
threadPool.execute(new Runnable()//为线程池放入的任务
{
public void run()
{
for(int i=1;i<=10;i++){
System.out.println(Thread.currentThread().getName()+" loop of "+i+" for task "+task);
}
}
});
}
threadPool.shutdown();//启动一次顺序关闭,执行以前提交的任务,但不接受新任务
//threadPool.shutdownNow();//试图停止所有正在执行的活动任务,暂停处理正在等待的任务,并返回等待执行的任务列表
*/
//定时器线程池
ScheduledExecutorService threadPool= Executors.newScheduledThreadPool(3);
//过一段时间后执行任务
/*threadPool.schedule(new Runnable()
{
public void run()
{
System.out.println("bombing");
}
}
,10,TimeUnit.SECONDS
);*/
//以固定的频率执行任务
threadPool.scheduleAtFixedRate(
new Runnable()//任务代码
{
public void run()
{
System.out.println("bombing");
}
},
2,//隔多长时间后执行定时器
5,//频率时间
TimeUnit.SECONDS//时间单位
);
//所有的 schedule 方法都接受相对的延迟和周期作为参数,而不是绝对的时间或日期,将以Date所表示的绝对时间
//转换成要求的形式很容易.例如,要安排某个以后的 Date 运行,可以使用:schedule(task,date.getTime()-System.currentTimeMillis(),TimeUnit.MILLISECONDS)
//ExecutorService threadPool= Executors.newCachedThreadPool();//缓存线程池(线程数动态变化),当任务过来服务不过来时,自动增加线程个数来执行任务
/*ExecutorService threadPool= Executors.newSingleThreadExecutor();//单例线程池,线程池中只有一个线程,如果线程池中的线程死亡,就会自动再找一个替补,保证有一个线程--如何实现线程死亡后重新启动(找替补)
for(int j=1;j<=10;j++){
final int task=j;//处理final
threadPool.execute(new Runnable()//为线程池放入的任务
{
public void run()
{
for(int i=1;i<=10;i++){
System.out.println(Thread.currentThread().getName()+" loop of "+i+" for task "+task);
}
}
});
}
threadPool.shutdown();//启动一次顺序关闭,执行以前提交的任务,但不接受新任务
//threadPool.shutdownNow();//试图停止所有正在执行的活动任务,暂停处理正在等待的任务,并返回等待执行的任务列表
*/
//定时器线程池
ScheduledExecutorService threadPool= Executors.newScheduledThreadPool(3);
//过一段时间后执行任务
/*threadPool.schedule(new Runnable()
{
public void run()
{
System.out.println("bombing");
}
}
,10,TimeUnit.SECONDS
);*/
//以固定的频率执行任务
threadPool.scheduleAtFixedRate(
new Runnable()//任务代码
{
public void run()
{
System.out.println("bombing");
}
},
2,//隔多长时间后执行定时器
5,//频率时间
TimeUnit.SECONDS//时间单位
);
//所有的 schedule 方法都接受相对的延迟和周期作为参数,而不是绝对的时间或日期,将以Date所表示的绝对时间
//转换成要求的形式很容易.例如,要安排某个以后的 Date 运行,可以使用:schedule(task,date.getTime()-System.currentTimeMillis(),TimeUnit.MILLISECONDS)