这个知识点可能就是你与高级程序员之间的差距

在我们日常的编码中,多线程一直是一个令人头大的问题,今天小鸟来给小伙伴们介绍一下多线程的基本知识。

 

 

提到多线程,那么就先得弄清楚线程的概念。从Java程序的角度来说,整个运行起来的程序就是一个总的进程,而进程就是操作系统分配资源的最小单位。线程是进程中的一部分,一个进程中可以有很多个线程,这些线程共享这个进程的所有资源。Java程序在运行前会先编译为机器代码,然后进入JVM,JVM会从main方法开始执行。可以看下面的代码:

 

 

执行完毕后结果如下:

 

 

显而易见的,两个方法的的执行者都是main方法,这说明了这两个方法都在同一个线程内。在多线程编程中,最大的难点就是不知道一段代码会由哪个线程来执行,一旦操作不当,则很可能发生死锁等线程安全问题。

 

 

Java中的线程有两类,一个是用户线程,一个是守护线程。用户线程顾名思义就是处理用户编写代码的线程,而守护线程就是JVM为了保护自身而设置的保护机制。例如Java引以为傲的垃圾回收机制就是一种守护进程,它能有效的规避大量可能出现内存溢出的场景。JVM在用户进程执行完毕之前会一直运行,而守护进程是否运行则不会对JVM产生影响,因为守护进程本身就是为了辅助用户进程的。简单来说就是所有的非守护进程执行完毕后,JVM就会关闭,守护进程也将被关闭。

 

 

多线程是一个比较大的课题,后续小鸟还会花很多篇幅来细化和深入的讲解多线程,有兴趣的小伙伴可以多多关注,大家一起交流进步。

 

 
 
posted @ 2021-04-20 16:11  YoungDeng  阅读(75)  评论(0编辑  收藏  举报