进程:
正在运行的程序,是系统进行资源分配和调用的独立单位
每一个进程都有它自己的内存空间和系统资源
线程:
进程中的单个顺序控制流,是一条执行路径,是程序使用CPU的最基本单位
一个进程如果只有一条执行路径,则称为单线程程序
一个进程如果有多条执行路径,则称为多线程程序
多线程有什么意义?
多线程的存在,不是提高程序的执行速度,是为了提高应用程序的使用率。程序的执行其实都是在抢CPU的资源,CPU的执行权。
多个进程是在抢这个资源,而其中的某一个进程如果执行路径比较多,就会有更高的机率抢到CPU的执行权
我们不敢保证哪一个线程能够在哪个时刻抢到,所以线程的执行有随即性
并行和并发:
前者是逻辑上同时发生,指在某一个时间内同时运行多个程序
后者是物理上同时发生,指在某一个时间点同时运行多个程序
JAVA程序运行原理:
Java 命令会启动 java 虚拟机,启动 JVM,等于启动了一个应用程序,也就是启动了一 个进程。
该进程会自动启动一个 “主线程” ,然后主线程去调用某个类的 main 方法。
所以 main 方法运行在主线程中。在此之前的所有程序都是单线程的。
run()和start()的区别:
run():仅仅是封装被线程执行的代码,直接调用时相当于普通方法
start():首先启动了线程,然后再由JVM 去调用该线程的run()