JAVA中的多线程(一)
进程:是一个正在执行中的程序
每一个进程执行都有一个执行的顺序,该顺序是一个执行路径,或者叫控制单元
线程:就是进程中的一个独立的控制单元
线程在控制着进程的执行
一个进程中至少有一个线程
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方法,用于存储线程要运行的代码