00:00
那我们看下边这个叫线程,那线程呢,对于大家已经做过做过这个Java开发的这个同学来讲呢,其实并不陌生了,那我们这儿呢,作为一个回顾啊,从我们虚拟机的角度呢,我们看看哪几个点是需要咱们关注的啊,首先呢,我们说线程呢,是一个程序里的运行单元啊,这个不用多说了,说这样虚拟机呢,它允许一个应用程序呢,有多个线程并行的执行,诶这个是没问题的啊,这个呢,其实我们在API里边呢,大家看这个thread。哎,看这个thread的话呢,这块你看也写了,说这个一个线程呢,它是执行当中的一个执行的线程了,说一个thread类是A一个对象是执行中的一个线程,说Java虚拟呢,允许一个应用程序呢,有多个线程并行的来执行。呃,这个写的非非常清楚,也就是说呢,咱们Java虚拟机呢,是支持多线程的,诶是这个意思啊行,然后说呢,在hot power这个虚拟机里边,每一个线程呢,都与操作系统的本地线程有一个直接映射,诶这个大家呢,不知道之前有没有关注过啊,这就涉及到我们一个,呃,这个对应关系,因为我们其实真正啊,咱们说Java层面的一个线程真正运行的时候呢,我们调用的其实都是操作系统的本地线程。
01:11
啊,这个操作系统呢,我们说也有很多的进程啊,进程里边呢,我们对应的有很多本地线程,调用CPU资源呢,做一个执行,那我们Java层面的线程跟操作系统的本地线程是有一个一一对应的关系的。啊,当一个Java线程准备好执行以后呢,我们一个操作系统的本地线程呢,也就呃同时呢,创建了啊,那么这个时候呢,咱们下边也写了,这个时候呢,这个本地线程就开始执行,呃,执行什么呢?执行我们对应的这个Java线程里的run方法。啊是这样一个过程,那执行完毕以后呢,本地县城呢,就会做回收,那相应的呢,诶我们说本地县城跟这个Java县程相应的一些资源呢,也就会被释放,哎,那我们再有其他的线程的话呢,再去找本地的线程做这个对应啊那这里边提到这个说Java线程准备好以后,诶我们本地线程呢,开始创建,那所谓的准备是什么呢?诶刚才那会儿我们也提到了说呃,一个线程呢,它会有自己的程序计数器,呃,它自己的这个站结构是吧,包括还有缓存分配呀,本地存储啊等等,那就是涉及到这样的一些准备工作啊,它准备完以后呢,本地线程呢,就跟他同步的创建,然后呢,开始执行转方法。
02:28
哎,是这个过程啊,在这里边我们再强调一点,就是当我们这个run方法能够正常的执行完,或者说呢,出现了异常以后呢,我们有相应的异常处理机制,哎,我们也都算成叫正常执行完,那这时候呢,Java线程和本地线程都会被回收啊,然后相应的资源释放,那如果说呢,我们执行run方法的过程当中出现了一些未补货的异常。啊,有些异常呢,我们没有及时进行处理,那这时候呢,很显然就会导致我们Java线程呢,就终止了,那这个应该毫无疑问是吧,那Java线程终止以后呢,我们本地线程。
03:02
诶,本地线程他还要再做一个事儿,就是他来决定这个GVM呢,到底要不要终止。G要不要终止,嗯,我们线程肯定是要终止了是吧,那GM呢,要不要终止呢,还要取决于就是咱们当前这个线程呢,是不是最后一个,诶非守护线程。哎,我们说这个线程呢,其实呃分成叫呃守护呃线程,呃还有一个叫哎普通线程,那如果我们程序当中呢,呃,如果我们程序当中都剩下这个守护线程的话呢,其实虚拟机就可以退出了,哎如果你当前这个线程就是最后一个非守护线程了,那我们这个虚拟机呢,也就要被停掉了,哎,是这个意思啊。好,然后看下一个说呢,如果你使用这个j conso啊,或者任何一个调试工具啊,这是我们一个内存的一个监控工具啊,嗯,在这我们就不为了这一个点带着大家去演示了啊,还花一定的时间,这个咱们做一个介绍,咱们后续呢,讲到这个调优的时候呢,呃,类似的很多的工具咱们都要讲解啊,那如果你使用这个j conso或者任何一个调试工具的时候呢,咱们会看到后台呢,会有很多的线程啊,哪怕是咱们一个普通的一个Java程序,诶我们后边呢,还会后台呢也会有十几个线程啊,甚至更多。
04:13
那这个线程呢,我们说是不包括没方法线程和由美方法所创建的线程,那这个说后台运行的这些线程主要有哪几类呢?这个大家了解一下就行啊,提到呢叫虚拟机线程。虚拟线程呢,说只有在GM到达安全点的时候才会出现啊,什么是安全点,咱们到讲内存的时候,咱们再说啊,讲垃圾回收的时候提安全点,然后呢,嗯,它呢涉及到是stop the word啊这个。让我们所有应用程序呢,都终止啊,这叫做stop的word啊,这个垃圾的收集啊,线程站的收集,挂起和偏向锁的撤销,这呢都由这个虚拟站啊,虚拟机的这个线程来完成,还有呢,呃,叫周期任务线程啊,GC的线程,专门来负责垃圾回收的,这呢是一个典型的我们说后台线程啊,守护线程,还有编译线程,呃,将我们自节码编译成本地代码啊,本地的这个机器指令啊,还有信号调度的一个线程,呃,这个接收信号发送给GM,他在内部呢,诶适当调用这个适当方法呢进行处理等等,这呢都属于我们后台的这些线程。
05:15
啊,就是大家呢,通过这j councilo啊,然后看到后台这很多线程,诶说这都有哪些线程呢?诶主要呢,是这样的一些类别啊,这呢是咱们对这个线程呢,进行了一个简单的一个剖析啊,这个大家呢也是整体了解一下就可以了,因为开发中大家呢,诶都会使用到这个线程啊。
我来说两句