线程
1.线程三种创建方式
1.1 Thread类
线程执行体:重写run()方法,run()方法的方法体即是线程的执行体;
启动:start()方法
通过该方法创建的线程之间不能共享实例变量。
获取当前线程:this
1.2 Runnable接口
重写run()方法,启动还是通过Thread对象的start()启动。
作为Thread类的target来创建Thread对象,然后通过Thread对象的start()实例方法启动。
获取当前线程:Thread.currentThread()
1.3 使用Callable和Future创建线程
Callable接口,可以看作是Runnable增强版,call()方法,可以有返回值,也可以声明抛出异常。
Future接口,可以代表Callable接口里call()方法的返回值
该接口的实现类FutureTask同时实现了Future接口和Runnable接口,可以作为Thread类的target。
1.4 线程池
系统启动一个线程需要与操作系统交互,成本较高。使用线程池可以很好的提高性能。线程池在系统启动时及创建大量空闲的线程。
从Java 5开始,Java内建支持线程池,Excutors工厂类静态方法创建线程池如下:
1)newCachedThreadPo