Java—线程,多线程,线程池研究之旅 two【奇葩之旅,come】
今天研究主线程,大哥的头号打手
-
一. 前言
-
- 1. 更新慢,问题多
- 2. 纠正错误
-
二. 主线程概念
-
- 1. 什么是主线程(main线程)
- 2. 问题
- 3. 注意点
-
三. 主线程的调用(控制main线程)
-
四. 总结
一. 前言
1. 更新慢,问题多
最近手头事务繁重,请允许我暂时补充一些内容到B站上。由于还有其他工作要做, 所以更新会比较慢, 建议不要着急, 谢谢理解。
关于文章, 我发现存在不少问题, 由于自身知识储备还不足, 所以会不断学习进步。同时, 发出去的文章我会反复推敲, 发现错误及时修正。希望大家共同努力, 互相促进。
2. 纠正错误
奇葩之旅,come
奇葩之旅, come
奇葩之旅, come
二. 主线程概念
1. 什么是主线程(main线程)
为了更好地理解Java程序运行时的行为,在Java虚拟机(JVM)环境中,默认情况下会启动一个核心线程——‘头号小弟’(main thread),它会优先处理所有线程事务,并通过调用其定义好的main方法来启动整个应用逻辑。
同时
每个项目都必须包含一个主类(Main Class),该主类中必须包含一个名为'main'的方法。该'main'方法通常被定义为public static void main(String[] args)的形式,并且作为启动整个应用的入口点。
如下图:
Java程序里:

SpringBoot程序里:

不管是什么项目都会存在main的。
2. 问题
由于main在Java中代表主类
,而程序入口点指的是程序运行时将首先执行的指令
,因此主要方法通常被称为main。主要方法之所以被命名为public static void main(String[] args)
是因为它遵循Java语言规范中的标准命名惯例
,其中"public"表示面向公共访问
"static"表示不依赖于当前对象实例
"void"表示该方法不返回值
"String[] args"则表示该方法接受一个字符串数组作为参数。在中文编程社区中
主要方法通常简称为mian
而不会使用miand或其他变体来指代它。
上面的问题,不好意思,我不会…但是第二个问题我知道,其余问题自己查吧
首先main线程是java虚拟机(大哥大!!!)调用的。
其次这可比大哥(进程)更厉害,而且不在大哥(进程)的管辖范围内。
所以main方法的权限只能设置为最大的public,方便于java虚拟机的调用。
所以java虚拟机在执行main方法时可以不用创建对象,所以该方法必须是static(静态方法),在把类加载到内存时该方法就可以提前使用了。
又由于main方法需要接收执行java命令时传递给所运行的类的参数,所以是String类型的数组参数。
特别需要注意的是,在我们的开发过程中可能会遇到一些关键问题。对于每一个程序而言,在运行时都会有一个由Java虚拟机所创建的主流程(主线程)。在这个过程中中, 主流程首先需要确认主要(main)方法的存在性, 然后会进行初始化操作, 并建立该类的对象。自JDK 6版本起,默认情况下-main方法会被强制定义为主流程.
3. 注意点
1 一个程序可以有多个类文件,也就是可以有多个公共类(public class),
但是每个类文件里只能有一个公共类(public class),
但是类的里面可以有公共类,这就是内部类
3.2 每个类文件是可以有main方法,也可以没有main方法。(看来头号小弟,也有不受宠的时候啊,哈哈哈)
如下图:

观察上图可知:
不允许在外部类中有公共类(public class),但普通类是可以存在的。
移除‘test’后仍可编译运行。
识别为所有公共静态类、普通类以及支持接口的公共类均可存在并调用。
请记住:只有具有static修饰的静态方法或变量才能被调用。
图片最右侧显示的结果‘大哥驾到,请让开!’是通过使用Main.class直接调用实现的。
行了,请大家看看这张图片吧。内容讲得不够清晰透彻,并且代码量比较大且较为复杂。为了全面展示所有知识点,请注意这些重点内容即可哦!哈哈
三. 主线程的调用(控制main线程)
当程序启动后时,
main线程会自然地被创建出来。
如果要对main线程进行控制,
就需要获取到一个main线程的引用对象。
可以通过调用currentThread()方法来实现这一点,
该方法存在于Java的Thread类中。
这个方法的作用是返回正在执行的线程实例。
此外,
main线程默认优先级被设定为5,
其余所有剩余的线程默认优先级均继承自基类。
代码就不附上了,自己搜一下就行,这个不是重点。
四. 总结
知识并非一蹴而就而是需要循序渐进不是一朝一夕的学习积累才能掌握这一知识只有通过持续不断的学习积累才能掌握这一知识从基础入手深入理解其本质内涵并逐步掌握其实现原理涵盖基本概念、实现方法及部分代码实现细节(建议深入分析这些代码背后的逻辑机制以更好地理解其工作原理)
如果写的有误或者理解得不好,请一定告知,我会改正~~
