多线程
开发工具与关键技术:eclipse java
作者:梁峻豪
撰写时间:2021.4.28
进程:进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个
进程,进程是处于运行过程中的程序,并且具有一定独立功能。
线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少
有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。
什么是多线程呢?即就是一个程序中有多个线程在同时执行。
单线程程序:即,若有多个任务只能依次执行。当上一个任务执行结束后,下一个任务开
始执行。如,去网吧上网,网吧只能让一个人上网,当这个人下机后,下一个
人才能上网
多线程程序:即,若有多个任务可以同时执行。如,去网吧上网,网吧能够让多个人同时上网。
程序运行原理:
1:分时调度:
所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间。
2抢占式调度:
先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程
随机性),Java 使用的为抢占式调度。
如果在执行过程遇到循环时间比较长的代码,那么在循环之后的其他代码是不会被马
上执行的。如下代码演示:
若在上述代码中 show 方法中的循环执行次数很多,这时在 d.show();下面的代码是不会马上执行的,并且会看到不停的输出 name=A,i=值,这样的语句。
原因是:jvm 启动后,必然有一个执行路径(线程)从 main 方法开始的,一直执行到main 方法结束,这个线程在 java 中称之为主线程。当程序的主线程执行时,如果遇到了循环而导致程序在指定位置停留时间过长,则无法马上执行下面的程序,需要等待循环结束后能够执行。
Thread类
Hread是程序中的执行线程.java虚拟机允许应用程序并发地运行多个执行线程
创建线程的俩种方法:
一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。创建对象,开启线程。run 方法相当于其他线程的 main 方法。
另一种方法是声明一个实现 Runnable 接口的类。该类然后实现 run 方法。然后创建 Runnable 的子类对象,传入到某个线程的构造方法中,开启线程。
创建线程方式一继承 Thread 类:
1 定义一个类继承 Thread。
2 重写 run 方法。
3 创建子类对象,就是创建线程对象。
4 调用 start 方法,开启线程并让线程执行,同时还会告诉 jvm 去调用 run 方法。
自定义线程类:
Ps: 线程对象调用 run 方法不开启线程,仅是对象调用方法。线程对象调用 start 开启线程,并让 jvm 调用 run 方法在开启的线程中执行。