多线程的使用-->1

目录

1.程序 进程 线程的定义

2.创建线程

run方法

3.启动线程

4.线程优先级

5.精灵线程(守护线程)


1.程序 进程 线程的定义

  • 程序: 一组静态的代码

  • 进程: 一个处于运行状态的程序 。 进程 = 执行内存 + 线程

    每当启动一个进程时,至少会有一个线程,称为:主线程

  • 线程:程序运行的过程中,真正用来执行程序功能的那个单元

    每当一个进程开启,都会产生一个主线程

    可以根据设计需求,由主线程产生更多的子线程,共同完成程序的执行过程。

    多线程的目的就是为了提高执行效率

2.创建线程

  • 创建线程类 , 暂时2种方式

    • 自定义线程类,实现Runnable接口,重写run方法 .

      实现Runnable接口的类对象,允许被多线程单独运行。

    • 自定义线程类,继承Thread父类,重写run方法

  • 创建线程对象

    • new Thread()对象

run方法

  • run方法就是线程启动后,自动调用的方法。 就如同main方法是java程序启动后,自动调用的方法

  • 我们在编码中,不能主动的调用run方法。一旦主动调用run方法,就不属于多线程操作

  • main方法是由主线程自动调用的, run方法就有子线程自动调用

  • 子线程的启动需要一定的条件

3.启动线程

  • 线程对象在执行时,会自动调用run方法

  • 如果(手动)主动的调用run方法,那不属于线程操作,只属于简单的面向对象操作。

  • 从计算机底层来讲,真正能够执行代码指令的是CPU

  • 当线程对象执行并能够处理代码指令时,也就说明线程对象获得了CPU(操作系统)

  • Java支持的抢占式获得CPU

  • 线程抢到cpu会执行,执行一会就回释放cpu,再重新争抢。

  • 所以多线程的执行顺序是不确定。

  • 线程创建之后,必须启动才能开始争抢CPU

  • 这里我们所谓的启动线程,不是执行线程,是让线程开始争抢cpu

  • 如何启动线程呢?

  • 调用thread.start()

    狭义多线程 和 广义多线程

  • 有多个线程对象,但只有1个cpu 。 称为广义多线程

  • 有多个线程对象,有多个cpu(处理器数量)

4.线程优先级

  • 线程的执行过程是需要抢占CPU的

  • 可以通过设置线程的优先级来提高线程抢占CPU的几率

  • 调用a.setPriority();设置优先级

    优先级的值1到 10

    所有新创建的线程,默认的优先级都是5

5.精灵线程(守护线程)

  • 所有新创建的线程,称为用户线程

    如果主线程执行完毕,但用户线程没有执行完毕,主线程会等待用户线程执行完后在关闭程序

  • 守护线程是用来守护主线程的,只要主线程执行完毕,所有的守护线程立刻结束,关闭程序

  • 调用a.setDaemon(true);设置线程是否为守护线程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值