一起走进多线程(四)

多线程(四)

前面说到了线程的创建和终止相关的内容,下面主要讲讲线程的其他相关方法:

yield( )方法:“谦让”,即让出cpu的执行权,线程重新进入到就绪状态,与其他线程争抢CPU的执行权,并可能再去获得CPU资源。所以说并不能百分百保证yield( )达到谦让效果。调用该方法不会释放锁资源。

sleep()方法:“睡眠”,这个方法有一个参数表示睡眠的毫秒数,线程在睡眠期间会让出时间片,但不会释放所资源。

yield( )和sleep( )两者对比:

假设有一群人在公司中午需要使用微波炉热饭,那大家就定下规矩,谁先到谁先用,开始后员工A先到达微波炉所在位置,1.此时他对大家说我们重新来一次,这时大家回到原位重新开始抢夺微波炉,而员工A依旧有可能抢夺到微波炉的使用权,这就是yield( )。 2.此时他对大家说,这个时候我想休息下,你们先热饭,我去休息了,其他人有开始抢夺微波炉的使用权,而员工A就不再进行争夺,这就是sleep( ) 。

join( ):假设线程A调用了线程B的join( )方法,直到线程B执行完毕后,才会继续执行线程A。这也是一种保证线程执行顺序的方式(常考)

守护线程:

​daemon线程,主要是被用作在程序中后台调度以及支持性工作的。当一个最后一个非守护线程退出时,守护线程也会自动死亡,虚拟机也将会推出。可以通过调用Thread.setDaemon(true) 将线程设置为Daemon线程。值得注意的是,当虚拟机推出的时候,daemon线程中的finally语句块不一定会执行,所以我们在daemon线程中不能依赖finally块中的内容来帮我们执行关闭或清理资源的逻辑。daemon这个感念理解就好了,一般我们不会用上守护线程。

线程优先级:

java的线程优先级范围从1-10,可用通过setPriority(int)方法来修改优先级,默认是优先级为5,优先级高的线程分配时间片的数量要多余优先级低的线程。在不同的虚拟机和操作系统上,线程的优先级规划存在差异,所以我们并不能确保优先级的设定会起作用。

多线程编程的基础知识应该要告一段落了,接下来会讲讲并发工具和锁的相关知识,如果有什么疑问可以在下方留言,大家一起学习一起进步。

以上就是本节内容,谢谢大家的阅读,如有错漏,欢迎评论区指正提出😚!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值