写点什么

25《重学 JAVA》-- 多线程(二)

作者:杨鹏Geek
  • 2021 年 12 月 26 日
  • 本文字数:677 字

    阅读完需:约 2 分钟

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、任务执行完,除了核心线程,空闲得线程会在存活时间之后释放

 

发布于: 53 分钟前
用户头像

杨鹏Geek

关注

你必须比别人更努力 才能看起来毫不费力! 2019.10.26 加入

码农

评论

发布
暂无评论
25《重学JAVA》--多线程(二)