Java多线程的几个基本概念

并发与并行

并发:指两个或多个事件在同一时段内发生
交替执行

并行:指两个或多个事件在同一时刻发生(同时发生)
同时执行
在这里插入图片描述

进程与线程

进程:进入内存的程序加进程
所有的应用程序都需要进入到内存中执行,临时存储RAM中
在这里插入图片描述
线程:点击应用(如电脑管家)的功能(病毒查杀、清理垃圾、电脑加速)执行就会开启一条应用程序到cpu的执行路径,CPU就可以通过这个路径执行功能,这个路径名字就叫线程。

线程属于进程,是进程中的一个执行单元,负责程序的执行。

单核心单线程CPU
CPU在多个线程之间做高速切换,轮流执行多个线程,效率低,切换速度(1/n毫秒)
多线程好处
1.效率高
2.多个线程之间互不影响
在这里插入图片描述

线程调度

分时调度
所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间。

抢占式调度
优先让优先级高的程序使用CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性)。Java使用的为抢占式调度

设置线程的优先级
在这里插入图片描述

主线程

主线程:执行主(main)方法的线程

单线程程序:java程序中只有一个线程
执行从main方法开始,从上到下依次执行

JVM执行main方法,main方法会进入到栈内存
JVM会找操作系统开辟一条main方法通向cpu的执行路径
cpu就可以通过这个路径来执行main方法
而这个路径有一个名字,叫main(主)线程

package com.Thread;
/*
  主线程:执行主(main)方法的线程

  单线程程序:java程序中只有一个线程
  执行从main方法开始,从上到下依次执行

  JVM执行main方法,main方法会进入到栈内存
  JVM会找操作系统开辟一条main方法通向cpu的执行路径
  cpu就可以通过这个路径来执行main方法
  而这个路径有一个名字,叫main(主)线程
 */
public class Demo01MainThread {
    public static void main(String[] args) {
        Person p1 = new Person("小强");
        p1.run();
        System.out.println(0/0); //in thread "main" java.lang.ArithmeticException:
        Person p2 = new Person("旺财");
        p2.run();
    }
}

在这里插入图片描述

package com.Thread;

public class Person {
    private String name;

    public void run(){
        //定义循环,执行20次
        for (int i = 0;i<20;i++){
            System.out.println(name+"--->"+i);
        }
    }
    public Person(String name) {
        this.name = name;
    }

    public Person() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值