引言:
世间万物都可以同时完成很多工作,例如,人体可以同时进行呼吸,呼吸的同时你也可以同时排放有毒气体,你甚至可以去思考如何上厕所才能不崩出水花,
获得10分的好成绩。你的电脑可以同时听歌、玩联盟,或者刷网课。这种思想放在Java中称之为“并发”,我们将并发完成的每一件事情称之为线程。
(15204493106)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
进入正题!
在Java语言中,并发机制十分的重要,个人觉得淘宝的秒杀系统就是一个非常牛皮的案例,感兴趣的小伙伴可以去看一下我的这个博客。
https://www.cnblogs.com/James-Harden/p/12723907.html。里面有对于高并发十分详细的简介。
- 以及有的时候面试官可能会问你,假如一个线程池的线程忽然异常了这个线程池会怎样处理这个线程?
- 了解JDK的 Executors 线程池吗?
- 阿里巴巴的开发手册上为啥不允许线程池的默认实现?
这些问题小伙伴可以看看这篇文章来做更深度的剖析!
文档:有的线程它死了,于是它变成一道面试题...
多线程的机制十分的复杂,举个恰当的例子,比如你同时阅读三本书,首先阅读第一本书的第一张,然后阅读第二本书的第一张,再阅读第三本书的第一张。回过
头来你在阅读第一本书的第二张。。。。。。以此类推,就体现出了多线程的复杂性。
线程在操作系统中是如何工作的呢?
Java多线程在不同的操作系统中也存在着差异,例如我的电脑使win10系统,windows系统是多任务操作系统,它是以进程为单位。一个进程是一个包含自身地址的程序
,每个独立执行的程序都称之为进程也就是正在执行的程序。系统可以分配给每一个进程一段有限的使用CPU时间(专业点叫做:CPU时间片),CPU在这段时间中执行某
个进程,然后又在下一个时间片跳到另一个进程中去执行。由于CPU转换的较快,所以给了我们一个进程是同时进行的假象!!!
下面,我用一个图更直观的表明Windows系统的执行模式:
一个线程就是进程中的执行流程,一个进程中可以包含多个线程。每一个线程也可以得到一小段的执行时间。这样一个进程就可以具有多个并发执行的线程啦!!
实现线程的两种方式?
Java主要提供了两种方式实现线程
- 继承java.lang.Thread类
- 实现 java.lang.Runnable接口
线程的生命周期?
线程的生命周期有七种状态:
- 出生状态
- 就绪状态
- 运行状态
- 等待状态
- 休眠状态
- 阻塞状态
- 死亡状态
我用一个图更直观的将他表述出来: