多线程相关知识点

实现多线程

进程

在这里插入图片描述

线程

在这里插入图片描述

多线程的实现方式

在这里插入图片描述

具体代码

在这里插入图片描述
注意,要在自定义的方法中继承Thread,并且重写run方法
在run方法里,是自己的需求

在这里插入图片描述
注意,不能用普通的方法调用方式,而是用start(属于Thread中的方法,这里采用多态形式),用来启动线程,启动run

两个小问题

在这里插入图片描述

设置和获取线程名称

在这里插入图片描述

获取线程名称

要在重写的run方法中获取,采用getName方法
在这里插入图片描述

另一种方法
在测试类main方法中得到线程名称
在这里插入图片描述
因为这个方法返回线程对象,并且是静态方法,所以可以直接利用Thread类名调用该方法,从而返回对象,再紧接着调用getName方法,就可以不用回到类定义中写getName

默认线程名称

在这里插入图片描述
在这里插入图片描述
注意,获取线程名称的操作就是定义对象时,采用的无参构造,但是需要在Mythread类中的run方法中调用getName,可以直接进行调用 例如 输出语句中写
getName(),因为这是父类中封装的方法

源码,在源码中,有一个无参构造器,所以,如果直接调用,会采用默认形式,如上图右侧
在这里插入图片描述

自定义线程名称

方法定义

在这里插入图片描述
设置名称时,要在测试类中利用Thread子类对象调用setName方法

带参构造器定义

在这里插入图片描述
首先要在子类中写入无参带参构造方法,带参构造加入String类型参数,调用super方法,传回父类中的带参构造(因为这个带参构造定义名称的功能是Thread类中的,所以要写带参构造时调用super)

线程调度

简介

在这里插入图片描述

设置和获取线程优先级

在这里插入图片描述
这里直接利用定义出来的对象 进行方法的调用 这些方法都是Thread的 所以这里采用的是多态的方法
注意,设置优先级,只是分给该线程的时间片更多,不一定会一定优先执行该线程

在这里插入图片描述

线程控制

在这里插入图片描述

sleep方法 使当前正在执行的线程停留指定的毫秒数

在这里插入图片描述
这个方法要在run中写入

作用 可以让线程每隔一段时间再执行,使线程执行的次数较为均衡

在这里插入图片描述

join方法 等待线程死亡

在这里插入图片描述
这个方法可以使某一个线程执行完毕之后,其他线程才开始执行,所以要在测试类中执行,在某一个线程启动之后的下一行代码,利用线程对象调用,采用join方法

setDaemon(Boolean i)方法 标记线程为守护线程

在这里插入图片描述
这里设置td1和td2为守护线程,设置main方法为主线程,命名为刘备,当主线程执行完毕之后,守护线程也会紧接着关闭,但不会立马关停

线程的生命周期

在这里插入图片描述

多线程的实现方式之二:实现Runnable接口

在这里插入图片描述

代码演示

在这里插入图片描述
这里对象实现了一个接口,并重写run方法,
注意 这里跟Thread类无关,所以不能直接调用getName方法,要用Thread.currentThread()调出当前线程的对象,之后利用这个调用getName()方法
在这里插入图片描述
这里主测试类中
首先创建一个myRunnable 类对象,用来作为参数传入构造方法,创建Thread对象,将my传入,并构造线程名称,之后,启动线程

好处优点

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值