qidao123.com技术社区-IT企服评测·应用市场
标题:
【后端面经-Java】Java创建线程的方法简介
[打印本页]
作者:
鼠扑
时间:
2023-6-20 12:33
标题:
【后端面经-Java】Java创建线程的方法简介
目录
1. 线程的基本概念
1.1 线程
1.2 线程状态和生命周期
2. 创建线程的四种方法
2.1 继承Thread类
2.2 实现Runnable接口
2.3 实现Callable接口
2.4 使用线程池
3. 参考资料
1. 线程的基本概念
1.1 线程
学过操作系统的同学应该不陌生,线程是计算机中的最小调度单元,一个进程可以有多个线程,执行并发操作,提高任务的运行效率
1.2 线程状态和生命周期
线程状态包括:
新建(new)
:线程创建而尚未启动的阶段;
就绪态(runnable/ready)
:线程已经启动,等到CPU资源分配
运行态(running)
:线程分配到CPU资源,正式运动
阻塞态(blocked)
:在运行过程中由于存在资源缺乏等原因,进入阻塞态等到资源条件满足,再次执行;
等待态(waiting)
:线程进入I/O等操作或者线程执行 sleep()、join() 或 wait(timeout) 方法时,,等待响应,这时候进入等待态,其他线程可接着执行;
超时等待(timed waiting)
:线程进入超时等待态类似于等待态,但是有时间限制,等待时间到了,线程会自动进入就绪态,等待CPU资源调度;
终止态(terminated)
:线程执行完毕或者出现异常,进入终止态,线程生命周期结束。
线程生命周期如图所示:
3. 阻塞态 vs 等待态
阻塞态:因为某些资源问题而引起,线程在阻塞态的时候,其他线程无法执行。
等待态: 一般不是由于资源问题而是线程本身的操作而引起,线程在等待态的时候,其他线程可以执行。
2. 创建线程的四种方法
2.1 继承Thread类
Java.lang.Thread类是java的线程类,类中包括一些线程基本信息和线程操作函数,通过对Thread类的继承,重写run()方法,可以实现线程的创建。
2.2 实现Runnable接口
不继承Thread类,而是初始化Thread类,实现Runnable接口,实现线程的创建。
2.3 实现Callable接口
Callable接口和Runnable接口类似,都是实现线程的创建,Callable接口可接受结果(有返回值),且可以检查异常。
2.4 使用线程池
使用线程池创建线程的优点如下所示:
减少每个任务的调用开销
提供一种可行方法,限制和管理系统资源消耗
能够提高线程异步执行的性能
两种创建方式:
ThreadPoolExecutor
Executors
注
:关于具体的代码解释,以后有机会再补充,各位也可以根据下面的参考博客进行学习。
3. 参考资料
参考博客-1
参考博客-2
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/)
Powered by Discuz! X3.4