线程的创建方式:
(1)继承Thread类,重写run()方法;
(2)实现Runnable接口;
(3)实现Callable接口(有返回值);
(4)使用线程池:单例线程池、固定线程池、缓存线程池、定时线程池。
线程状态转换
线程池
四种线程池:单例线程池、固定线程池、缓存线程池、定时线程池
(1)单例线程池:只有一个核心线程的单例线程池,阻塞队列
ExecutorService threadPool = Executors.newSingleThreadExecutor();
(2)固定线程池:线程数量固定的线程池,最大线程数和核心线程数一样,阻塞队列
ExecutorService threadPool = Executors.newFixedThreadPool(5);
(3)缓存线程池:线程数量不限的线程池,闲置线程60秒回收,SynchronousQueue
ExecutorService threadPool = Executors.newCachedThreadPool();
(4)定时任务线程池:核心数固定的定时任务线程池,DelayedWorkQueue
ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);