Thread 类的基本用法

目录

  1. 创建多线程
  2. 线程中断
  3. 线程等待
  4. 线程休眠
  5. 获取线程实例

一、创建多线程:

五种方法:

  1. 继承 Thread, 重写 run

2.实现 Runnable, 重写 run

 

 3.继承 Thread, 重写 run, 使用匿名内部类

 4.实现 Runnable, 重写 run, 使用匿名内部类

 5.使用 lambda 表达式

 

二、线程中断(interrupted…)

中断一个线程:

        中断的意思是不是立即让线程停止,只是通知线程应该要停止,有三种状态可供选择,取决于代码的写法 「立即停止/等会停止/不停止」 -> 两个线程之间 A通知B

1.使用一个标志位来控制线程是否停止。

 A通知B终止时,B是否终止 看自己 代码怎么写。 如果不写break 就不终止, 或者break 写在哪里来看被通知终止时 如何进行中断操作

2. 使用thread自带的标志位来进行判定,这里可以唤醒sleep //currentThread() =>类似于this

1.自定义标识符中断

2.使⽤ Thread.interrupted() 或者 Thread.currentThread().isInterrupted() 代替⾃定义标志位

//注意区别此处的interrupted和isinterrupted

interrupted:判断当前线程的中断标志位是否设置,调⽤后清除标志位。
isInterrupted:判断对象关联的线程的标志位是否设置,调⽤后不清除标志位 

三、线程等待(join)

线程是一个随机调度的过程,等待线程做的事情就是在控制两个线程的结束顺序。 (谁先结束谁后结束 ,等待的线程会后终止)

//这段代码里t1执行完才会执行t2,有顺序结束。

四、线程休眠(SLEEP)

public static void sleep(long millis)

        让线程休眠,本质上是让这个线程不参与调度(不在cpu上执行了)

        线程A调用sleep 线程A就会进入休眠状态,把A从就绪队列中放到另外一个阻塞队列里,此时暂时无法参与调度(比如皇上翻牌子,某些妃子被打入冷宫  阻塞多久就相当于打入冷宫多久) 但是sleep被唤醒之后 由于考虑到调度的开销,线程不一定立即就被调度,此时实际上等待的时间大于设置的时间的。挂起(hang up)和阻塞(block) 是一个意思。

 

 

五、获取线程实例

静态方法(类方法): 不需要实例来调用,通过类名调用。

 current static() 在哪个线程中调用 就能获取到哪个线程的实例:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值