Java基础第二遍-11-多线程-概述
进程
- 分配程序在内存中的空间
- 正在运行中的程序
- 一个进程包含一个或多个线程,线程是程序运行的基本单元
- 每个线程都有自己运行的内容,是程序正要执行的内容
cpu
- 多个线程在运行的时候,单核cpu在,多个线程之间进行切换(时间片,切换是随机的)分别执行线程,看似是多个线程在同时执行。
- 好处:可以同时执行多个程序
- 弊端:一旦运行程序过多,cpu切换时间会显得很长,就会显得很卡顿
Java是多线程运行的
JVM一启动就有多个线程在运行
- main方法的主线程运行
- gc垃圾垃圾回收线程
线程的创建
- 创建一个类继承Thread
- 重写run方法
- 直接创建Thread的子类对象创建线程
- 调用start方法开启线程并调用线程的任务run方法执行
为什么要继承Thread重写run方法? - 创建线程的目的是为了开启一条执行路径,去运行指定的代码和其他代码实现同时运行,而运行的指定代码就是这个执行路径的任务,JVM创建的主线程,的任务都定义在了主函数中。
- 而自定义的线程它的任务在哪呢?Thread类用于描述线程,线程是需要任务的,所以Thread类也对任务的描述。这个任务就通过Thread类中的run方法来体现,也就是说,run方法就是封装自定义线程运行任务的函数。
- run方法中就是要运行的内容
package com.bixiangdong.thread;
class Demo001 extends Thread{
Demo001(String name){
super(name);
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("...name"+getName());
System.out.println("获取当前线程名称"+currentThread().getName());
}
}
}
public class Demo01 {
public static void main(String[] args) {
new Demo001("线程1").start();//给线程赋名字
new Demo001("线程2").start();
//获取主线程名称
new Demo001("线程2").run();
}
}
调用run和调用start有什么区别?
线程的状态


浙公网安备 33010602011771号