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<Boolean> result1 = ser.submit(t1);
6.获取结果: boolean r1=result1.(get)
7.关闭服务: ser.shutdownNow();
参数解释:
corePoolSize:核心线程数
maximumPoolSize:最大线程数
keepAliveTime:多余核心线程数得线程存活时间
unit:时间单位
workQueue:阻塞队列,如果任务很多,可以先把任务放到队列中,当线程执行完当前任务会自动从队列获取新任务
threadFactory:线程得创建工厂
handler:如果线程满了。按照我们指定得拒绝策略拒绝执行任务
线程池执行顺序:
1、线程池创建,创建核心线程,准备接收任务
2、没有空闲核心线程,就把任务放到队列中
3、队列满了之后,在最大线程数范围内创建新得线程处理任务
4、最大线程数也满了,就开始使用拒绝策略处理任务
5、任务执行完,除了核心线程,空闲得线程会在存活时间之后释放
版权声明: 本文为 InfoQ 作者【杨鹏Geek】的原创文章。
原文链接:【http://xie.infoq.cn/article/d8961170edb85f7f740a069de】。文章转载请联系作者。
评论