25《重学JAVA》--多线程(二)
一、创建线程:
Java中创建一个线程涉及到:java.lang.Thread类、java.lang.Runnable接口、Callable接口创建线程。Thread是线程类,创建一个Thread对象就会产生一个新的线程。而线程执行的程序代码是在实现Runnable接口对象的run()方法中编写的,实现Runnable接口对象是线程执行对象。
二、继承Thread类
1.自定义线程类继承Thread类
2.重写run()方法,编写线程执行体
3.创建线程对象,调用start()方法启动线程
三、实现Runnable接口
1.定义TestThread类实现Runnable接口
2.实现run()方法,编写线程执行体
3.创建线程对象,调用start()方法启动线程
四、Callable接口创建线程
1.实现Callable接口,需要返回值类型
2.重写call方法,需要抛出异常
3.创建目标对象
4.创建执行服务: ExecutorService ser = Executors.newFixedThreadPool(1);
5.提交执行: Future
6.获取结果: boolean r1=result1.(get)
7.关闭服务: ser.shutdownNow();
参数解释:
corePoolSize:核心线程数
maximumPoolSize:最大线程数
keepAliveTime:多余核心线程数得线程存活时间
unit:时间单位
workQueue:阻塞队列,如果任务很多,可以先把任务放到队列中,当线程执行完当前任务会自动从队列获取新任务
threadFactory:线程得创建工厂
handler:如果线程满了。按照我们指定得拒绝策略拒绝执行任务
线程池执行顺序:
1、线程池创建,创建核心线程,准备接收任务
2、没有空闲核心线程,就把任务放到队列中
3、队列满了之后,在最大线程数范围内创建新得线程处理任务
4、最大线程数也满了,就开始使用拒绝策略处理任务
5、任务执行完,除了核心线程,空闲得线程会在存活时间之后释放