Bootstrap

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 result1 = ser.submit(t1);

6.获取结果: boolean r1=result1.(get)

7.关闭服务: ser.shutdownNow();

 

 

参数解释:

corePoolSize:核心线程数

maximumPoolSize:最大线程数

keepAliveTime:多余核心线程数得线程存活时间

unit:时间单位

workQueue:阻塞队列,如果任务很多,可以先把任务放到队列中,当线程执行完当前任务会自动从队列获取新任务

threadFactory:线程得创建工厂

handler:如果线程满了。按照我们指定得拒绝策略拒绝执行任务

 

线程池执行顺序:

1、线程池创建,创建核心线程,准备接收任务

2、没有空闲核心线程,就把任务放到队列中

3、队列满了之后,在最大线程数范围内创建新得线程处理任务

4、最大线程数也满了,就开始使用拒绝策略处理任务

5、任务执行完,除了核心线程,空闲得线程会在存活时间之后释放