内容
1.进程
2.多进程的作用
3.线程
4.多线程作用
5.java程序的运行原理
6.Java中实现多线程的第一种方式
7.线程生命周期示意图
一.进程
一个进程对应一个应用程序。比如:在windows操作系统启动Word就表示启动了一个进程。现代的计算机都是支持多进程的,在同一个操作系统中,可以同时启动多个进程。
二.多进程的作用
单进程计算机同一时间只能做一件事情。
对于单核计算机来讲,在同一个时间点上,多个进程不能同时运行。因为计算机的CPU只能在某个时间点上做一件事。由于计算机在多个进程之间频繁切换的切换速度极高,人们就会感觉多个进程在同时运行
多进程作用不是为了提高执行速度,而是提高CPU的使用率
注意:进程和进程之间的内存是独立的
三.线程
线程是一个进程中的执行场景,一个进程可以启动多个线程。比如百度服务器可以供多人同时访问,比如一款网络游戏可以多人同时玩(个人理解)。
四,多线程的作用
线进程不是为了提高执行速度,而是提高应用程序的使用率
注意:线程和线程共享“堆内存和方法区内存”,栈内存是独立的,一个线程一个栈。
五.Java程序的运行原理
java命令会启动java虚拟机,启动JVM,等于启动了一个应用程序,表示启动了一个进程,该进程会自动启动一个“主线程”,然后主线程去调用某个类的main方法,所以main方法运行在主线程中。
六.java中实现多线程的第一种方式
1.步骤
定义线程
1.继承java.lang.Thread
2.重写run方法创建线程启动线程
2.使用示例
public class 测试程序 {
public static void main(String[] args) throws Exception {
//1.创建一个线程
Thread t = new Processor();
//启动
t.start();//这段代码执行瞬间结束,用来告诉JVM再分配一个新的栈给t线程
//run不需要程序员手动调用,系统线程启动之后自动调用run方法
//t.run();//这是普通方法调用,这样做没有分配新的栈,程序只有一个线程,run方法结束之后,下面的程序才能
//同时进行,而上面的方式可以使得run和下面的程序同时执行
//一段在主线程中运行的代码
for(int i = 0;i < 10;i++) {
System.out.println("main-->" + i);
}
//有了多线程之后,main方法结束只是主线程栈中没有栈帧了
//但是其他线程或者其他栈中可能还有栈帧
//也就是说,main方法结束,程序可能还在运行
}
//定义一个线程
static class Processor extends Thread//注意这里要加一个static。因为静态方法不能直接访问非静态成员。属于内部类调用问题将内部类改为static,不能从上下文进行引用
{
//重写run方法
public void run() {
for(int i = 0;i < 30;i++) {
System.out.println("run--" + i);
}
}
}
}