Java 基础复习 Day18

Java 基础复习 Day18

线程(1)

  • 并发与并行

    并发:多个事项在同一时间段内执行 (交替)

    并行:多个事项在同一时刻进行(同时)

  • 进程与线程

    图片来自网课,如有侵权请联系删除

    进程:进入内存执行中的应用程序就叫进程(可通过任务管理器管理进程,停止进程)

在这里插入图片描述

​ 线程:是进程的一个执行单元,负责程序的执行

在这里插入图片描述

  • 线程调度
    • 分时调度:所有线程轮流使用cpu的使用权,平均分配每个线程占用cpu的时间
    • 抢占式调度:优先让优先级高的线程去使用cpu,如果线程的优先级相同,那么会选择一个(线程随机性),java使用的就是抢占式调度。

在这里插入图片描述

Win11在详细信息中可以设置进程的优先级,如果设置为高的话,则cpu优先执行进程中的线程就会几率大一点

  • 主线程

    对于java而言,主线程是:执行main方法的线程

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

在这里插入图片描述

弊端:当中间有异常时,后边的方法都不会再执行

  • 多线程程序的创建,一共有两种方式

    1.创建Thread类的子类(java.lang.Thread)

    实现步骤:

    • 创建Thread类的子类

    • 重写Thread类的run方法,开启线程任务(确定这个线程要做什么)

    • 创建Thread子类的对象

    • 调用Thread的方法start,开启新线程,执行run

      注意:是调用start(JVM去调用run),而不是直接去执行run。

​ 结果:

​ 两个线程并发地执行:当前线程(main)线程和另外一个线程(创建的新线程,执行其run方法)

​ 注意:多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。

​ java程序属于抢占式调度,优先让优先级高的线程去使用cpu,如果线程的优先级相同,那么会选择一个(线程随机性)随机执行。

    ```java
    //1.创建Thread类的子类
    public class MyThread extends Thread{
        //2.重写Thread类的run方法,开启线程任务(确定这个线程要做什么)
        @Override
        public void run() {
            for (int i = 0; i < 20; i++) {
                System.out.println("another thread run: " + i);
            }
        }
    }
    //Main方法中开启多线程
     public static void main(String[] args) {
            //3.创建Thread子类的对象
            MyThread mt = new MyThread();
            //4.调用Thread的方法start
            mt.start();
            //主线程的方法执行
            for (int i = 0; i < 20; i++) {
                System.out.println("main thread run: " + i);
            }
        }
    
    ```

结果随机:哪个进程抢占到cpu哪个进程先执行,所以导致print的结果不按顺序来

another thread run: 0
another thread run: 1
another thread run: 2
another thread run: 3
another thread run: 4
another thread run: 5
another thread run: 6
main thread run: 0
another thread run: 7
another thread run: 8
main thread run: 1
main thread run: 2
another thread run: 9
main thread run: 3
another thread run: 10
another thread run: 11
another thread run: 12
another thread run: 13
another thread run: 14
another thread run: 15
another thread run: 16
another thread run: 17
another thread run: 18
another thread run: 19
main thread run: 4
main thread run: 5
main thread run: 6
main thread run: 7
main thread run: 8
main thread run: 9
main thread run: 10
main thread run: 11
main thread run: 12
main thread run: 13
main thread run: 14
main thread run: 15
main thread run: 16
main thread run: 17
main thread run: 18
main thread run: 19

Process finished with exit code 0

执行原理图示(图片来源于网课,侵权请联系删除):

在这里插入图片描述

多线程内存图解(图片来源于网课,侵权请联系删除):
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值