一、多线程
- 并发:多个事件同一时段进行,切换调度
- 并行:多个事情同一时刻发生,
-
进程:
- 独立内存空间;
- 程序的一次执行过程。
- 一个应用程序可以同时运行多个进程;
- 进程是系统运行程序的基本单位;
- 系统运行一个程序就是一个进程从创建、运行到销毁的过程
-
线程:
- 进程中的一个执行单元,负责当前进程中程序的执行;
- 一个进程中至少有一个线程。
- 一个进程有多个线程也叫多线程程序。
线程调度
- 分时调度:所有线程平均分配CPU的占用时间
- 抢占式调度;优先队列,堆实现的(优先级如果相同,则随机选)。
二、创建线程
包位置
java.lang.Thread
,每个现场的作用是完成一定的任务(程序流)
Thread类常用功能:
- void setName(String name)
- String getName():
创建并启动多线程的步骤:
- 定义Thread类的子类;重写run()方法,方法体里面代表了线程需要完成的任务,也称线程执行体。
- 创建Thread子类的实例,创建线程对象;
- 调用线程对象的start()方法来启动该线程。
线程类
import java.util.Random;
public class MyThread extends Thread {
// 指定线程的名称
public MyThread(String name){
super(name);
}
// 重写run方法,完成该线程执行的逻辑
@Override
public void run() {
Random random = new Random();
for (int i = 0; i < 10; i++) {
try {
this.sleep(random.nextInt(500) + 500L);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(this.getName() + " 跑起来了......");
}
}
}
主函数
import java.util.Random;
public class Main {
public static void main(String[] args) throws InterruptedException {
Random random = new Random();
MyThread mt = new MyThread("thread");
mt.start();
for (int i = 0; i < 10; i++) {
Thread.sleep(random.nextInt(500) + 500L);
System.out.println("main也在跑。。");
}
}
}