/*

进程和线程:

.一个进程对应一个应用程序

启动 word. windows 启动 jvm .就是启动了一个进程。现代的计算机都支持多进程。

就是同一个操作系统中,同时启动多个进程

                  

多进程有什么作用:

单进程计算机只能做一件事情。

                          

玩电脑:打游戏 (游戏进程)听音乐(音乐进程)

对于单核计算机,同一时间上,游戏,和音乐,不是同时进行的,因为cpu在某个时间点上只能做一件事情。

游戏,和音乐,频繁的切换速度极快,给人一种同时进行的错觉。

                          

多进程的作用不是提高执行速率,而是提高cpu的使用率

                          

进程和进程直接的内存之间是独立的。

                          

多线程

线程:是一个进程中的一个场景。一个进程可以启动多个线程

                  

多线程不是为了提高速度,而是为了提高应用程序的使用率

                  

线程和线程共享 堆内存,和方法区内存,栈内存是独立的,一个线程一个栈。

                  

程序的运行原理

命令会启动 java 虚拟机,启动 jvm,等于启动了一个应用程序,表示启动了一个进程。

该进程会自动启动一个"主线程",然后主线程,去调用某个类中的main()方法,所以main() 方法运行在

主线程中。之前所有程序都是单线程的。

   

如何查看运行的java程序启动了多少线程 查看运行的java进程_主线程

   

                  

语言中实现线程的方式:

继承 java.lang.Thread 重写 run方法。

          

中实现线程的另一种方式:

实现 runable 接口;

实现runable 接口中的 run方法;

          

*/

   

方法一:

   

public class ThreadLineTest01 { 
public static void main(String[] args) { 
//创建
Thread t=new Processor(); 
//启动
t.start();//这段代码执行瞬间结束,告诉jvm 再分配一个新的栈给 t线程
//run() 不需要程序员手动调用
//t.run();//这是普通方法调用,这样之后程序还是只有一个线程。run方法结束之后,下面的才能执行。
//在主线程中执行
for(int i=0;i<100;i++){ 
System.out.println("main-->"+"i"); 
} 
   
//有了多线程之后,main 方法结束,是主线程中没有方法栈帧
//但是其他线程栈中可能还有栈帧
//所以可以得出结论,就是,main方法结束,可能程序还没有结束执行。
} 
   
} 
   
class Processor extends Thread{ 
   
public void run(){ 
for(int i=0;i<100;i++){ 
System.out.println("run"+"-->"+i); 
} 
   
} 
}

   

   

   

方法二:

   

public class ThreadTest02 { 
public static void main(String[] args){ 
// 创建线程:
Thread t=new Thread(new Processor1()); 
   
//启动
t.start(); 
   
} 
} 
   
//推荐使用 实runable 接口这个方式,因为,这样它的可扩展能力较强。一个类,实现接口之外,还保留了类的继承 
class Processor1 implements Runnable{ 
   
@Override 
public void run() { 
for(int i=0;i<1000;i++){ 
System.out.println("run-->+"+i); 
} 
   
} 
   
}