Java基础第二遍-11-多线程-概述

进程

  1. 分配程序在内存中的空间
  2. 正在运行中的程序
  3. 一个进程包含一个或多个线程,线程是程序运行的基本单元
  4. 每个线程都有自己运行的内容,是程序正要执行的内容

cpu

  1. 多个线程在运行的时候,单核cpu在,多个线程之间进行切换(时间片,切换是随机的)分别执行线程,看似是多个线程在同时执行。
  2. 好处:可以同时执行多个程序
  3. 弊端:一旦运行程序过多,cpu切换时间会显得很长,就会显得很卡顿

Java是多线程运行的

JVM一启动就有多个线程在运行

  1. main方法的主线程运行
  2. gc垃圾垃圾回收线程

线程的创建

  1. 创建一个类继承Thread
  2. 重写run方法
  3. 直接创建Thread的子类对象创建线程
  4. 调用start方法开启线程并调用线程的任务run方法执行
    为什么要继承Thread重写run方法?
  5. 创建线程的目的是为了开启一条执行路径,去运行指定的代码和其他代码实现同时运行,而运行的指定代码就是这个执行路径的任务,JVM创建的主线程,的任务都定义在了主函数中。
  6. 而自定义的线程它的任务在哪呢?Thread类用于描述线程,线程是需要任务的,所以Thread类也对任务的描述。这个任务就通过Thread类中的run方法来体现,也就是说,run方法就是封装自定义线程运行任务的函数。
  7. 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有什么区别?

线程的状态

image

posted @ 2021-10-28 21:41  争取做百分之一  阅读(36)  评论(0)    收藏  举报