33.并行、并发与多线程简介

一、多线程

  • 并发:多个事件同一时段进行,切换调度
  • 并行:多个事情同一时刻发生,
  • 进程:

    • 独立内存空间;
    • 程序的一次执行过程。
    • 一个应用程序可以同时运行多个进程;
    • 进程是系统运行程序的基本单位;
    • 系统运行一个程序就是一个进程从创建、运行到销毁的过程
  • 线程:

    • 进程中的一个执行单元,负责当前进程中程序的执行;
    • 一个进程中至少有一个线程。
    • 一个进程有多个线程也叫多线程程序。

线程调度

  • 分时调度:所有线程平均分配CPU的占用时间
  • 抢占式调度;优先队列,堆实现的(优先级如果相同,则随机选)。

二、创建线程

包位置java.lang.Thread,每个现场的作用是完成一定的任务(程序流)

Thread类常用功能:

  • void setName(String name)
  • String getName():

创建启动多线程的步骤:

  1. 定义Thread类的子类;重写run()方法,方法体里面代表了线程需要完成的任务,也称线程执行体
  2. 创建Thread子类的实例,创建线程对象;
  3. 调用线程对象的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也在跑。。");
        }
    }
}

你可能感兴趣的:(33.并行、并发与多线程简介)