什么是线程,什么是进程,--什么是协程/纤程:
程序:就是操作系统的一个 可执行文件 比如QQ.exe
进程:操作系统进行资源分配的基本单位
线程:在进程的内部,是调度执行的基本单位(多个线程之间共享这个分配的资源)
线程是在进程的内部,是进程的最小执行单位
程序是在硬盘上的,等他真正执行的时候,他会把这个文件的相关信息Load到内存里,叫做一个进程,就可以给他分配程序执行所需要的资源了,
一个程序可以有多个进程,真正开始执行的时候程序是以线程为基本单位开始执行,操作系统会找到这个进程的主线程
main方法,然后扔给cpu去执行,主线程如果中间开启了其他线程,再来线程之间的来回切换
单线程:如果程序里没有同时都在运行的路径,那就是单线程
多线程:一个程序中有多个线程在同时执行
多线程程序并不能提高程序的运行速度,但能够提高程序运行效率,让CPU的使用率更高
public class demo{
class T1 extends Thread{
@Override
public void run(){} ----->输出T1
}
psvm{
new T1().run(); -----这种方式是 T1,T1,T1,T1,T1,T2,T2,T2,T2,T2
new T1().start(); ------这种方式是 交替输出 T1,T2,T1,T2,T1,T2
sout("输出T2");
}
}
run():start()比较
start会在启动的时候创建一个线程运行run方法
run是直接在主线程运行(就相当于调用了一个普通方法)
1、为什么会有start方法,因为他继承了Thread类
2、run():相当于运行main方法开始,先去跑run方法,跑完之后继续执行之后的代码
start():相当于运行main方法开始,多出去一个线程去跑run方法,那边继续跑main方法的输出,所以会交替输出
线程:一个程序里不同的执行路径 就叫做一个线程