package com.dy.pool; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * 在Executors类里面提供了一些静态工厂,生成一些经常使用的线程池。 * 1. newSingleThreadExecutor * 建立一个单线程的线程池。这个线程池只有一个线程在工做,也就是至关于单线程串行执行全部任务。 * 若是这个惟一的线程由于异常结束,那么会有一个新的线程来替代它。 * 此线程池保证全部任务的执行顺序按照任务的提交顺序执行 */ public class SingleThreadExecutor { public static void main(String[] args) { System.out.println("欢迎来到线程世界!"); //建立一个可重用固定线程数的线程池 ExecutorService pool = Executors.newSingleThreadExecutor(); //建立实现了Runnable接口对象,Thread对象固然也实现了Runnable接口 SingleThreadExecutor.MyThread t1 = new SingleThreadExecutor().new MyThread("实例t1"); SingleThreadExecutor.MyThread t2 = new SingleThreadExecutor().new MyThread("实例t2"); SingleThreadExecutor.MyThread t3 = new SingleThreadExecutor().new MyThread("实例t3"); SingleThreadExecutor.MyThread t4 = new SingleThreadExecutor().new MyThread("实例t4"); //将线程放入池中进行执行 pool.execute(t1); pool.execute(t2); pool.execute(t3); pool.execute(t4); //关闭线程池 pool.shutdown(); } class MyThread extends Thread { public MyThread(String name){ super(name); } @Override public void run() { System.out.println(this.getName() + "正在执行。。。"); System.out.println(Thread.currentThread().getName() + "正在执行。。。"); } } }
另外说下 代码中的this.getName和Thread.currentThread().getName(): java
前者的this是指实例对象自身,后者是指实例对象中的当前执行线程;两者不要理解混淆了! ide