进程:是一个正在执行中的程序

    每一个进程执行都有一个执行的顺序,该顺序是一个执行路径,或者叫控制单元

线程:就是进程中的一个独立的控制单元

    线程在控制着进程的执行

一个进程中至少有一个线程

 

JAVA VM启动的时候会有一个进程java.exe

该进程中至少有一个线程在负责java程序的执行

而且这个线程运行的代码存在于main方法中

该线程称之为主线程

 

扩展:更细节说明JVM,JVM的启动不止一个线程,还有负责垃圾回收机制的线程

 

如何在自定义的代码中,自定义一个线程?

创建线程的第一种方式:

  继承Thread,步骤如下

    继承Thread类

    复写Thread类中的run方法

    调用线程的start方法,该方法有两个作用,一个是启动线程,第二个调用run方法

发现运行结果每一次都不同

因为多个线程都获取CPU的执行权,CPU执行到谁,谁就运行

明确一点,在某个时刻,只有一个程序在运行(一个线程),多核除外

CPU做快速的切换,达到看上去是同时运行的结果

我们可以形象把多线程的运行行为看成在互相抢夺CPU的执行权

这就是多线程的一个特性:随机性。谁抢到谁执行,至于执行多长,CPU说了算

 

 1 class Demo extends Thread
 2 {
 3     public void run()
 4     {
 5         for(int x = 0; x<60 ;x++)
 6             System.out.println("demo run"+x);
 7     }
 8 }
 9 
10 class ThreadDemo
11 {
12     public static void main(String[] args)
13     {
14         Demo d = new Demo();//创建好一个线程
15         d.start();
16         
17         for(int x = 0; x<60 ;x++)
18             System.out.println("Hello world"+x);
19 } 20 }

 为什么要覆盖run方法呢?

Thread类用于描述线程

该类就定义了一个功能,用于存储线程要运行的代码,该存储功能就是run方法

也就是说Thread类中的run方法,用于存储线程要运行的代码

 

版权声明:本文为hepengke原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/hepengke/p/7011022.html