Java并发(6):创建线程、线程池
1 创建线程方式
| public interfact Runnable{ | 
1.1 实现runnable接口
创建一个类实现Runnable接口,实现run方法,然后创建Thread类的实例,将实现了Runnable接口的对象作为参数传递给Thread的构造方法,并调用start方法启动线程。
- 
将任务代码移到实现了Runnable接口的类的run方法中(由于Runnable 是一个函数式接口,可以用lambda 表达式建立一个实例) 
- 
用 Runnable创建一个Thread对象
- 
启动线程 
| public class demo1 { | 
1.2 继承Thread类
创建一个类继承自Thread类,并重写run方法,然后创建该类的实例并调用start方法启动线程。
| class Thread implements Runnable{ | 
1.3 实现Callable接口
| public interface Callable<V>{ | 
- 
继承Callable实现call方法 
- 
FutureTask包装器将Callable转换成Future和Runnable 
| public class CallableDemo implements Callable<String> { | 
2 线程池
2.1 newCachedThreadPool
创建一个可缓存的线程池,线程池的大小可根据需要进行自动扩展,但在某些情况下可能会回收线程。
| ExecutorService executor = Executors.newCachedThreadPool(); | 
2.2 newFixedThreadPool
创建一个固定大小的线程池,线程数始终保持不变。
2.3 newSingleThreadExecutor
- 
创建一个单线程的线程池,保证所有任务按照指定顺序(FIFO,LIFO,优先级)执行。 
2.4 newScheduledThreadPool
- 
创建一个定时执行任务的线程池。