1、线程池
1) 创建测试线程
private static class MyThread extends Thread{
@Override
public void run() {
super.run();
System.out.println(Thread.currentThread().getName()+"正在执行。。。");
}
}
2) 创建线程池对象
//创建单线程线程池,线程串行执行
ExecutorService pool = Executors.newSingleThreadExecutor();
//创建固定大小的线程池
ExecutorService pool = Executors.newFixedThreadPool(2);
//线程池大小弹性变化
ExecutorService pool = Executors.newCachedThreadPool();
3) 执行线程
Thread t1 = new MyThread();
Thread t2 = new MyThread();
Thread t3 = new MyThread();
Thread t4 = new MyThread();
Thread t5 = new MyThread();
pool.execute(t1);
pool.execute(t2);
pool.execute(t3);
pool.execute(t4);
pool.execute(t5);
4) 关闭线程池
pool.shutdown();
5) 定时、周期性执行的线程池
//定时、周期性执行任务,跟Timer、TimerTask类似
ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(1);
exec.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
//long, measure elapsed time
System.out.println(System.nanoTime());
}
}, 1000, 2000, TimeUnit.MILLISECONDS);