Java多线程常用方法

举报
兔老大 发表于 2021/04/30 03:53:15 2021/04/30
【摘要】 start()与run()       start() 启动线程并执行相应的run()方法       run() 子线程要执行的代码放入run()方法 getName()和setName()  getName() 获取此线程的名字  setName() 设置此线程的名字 isA...

start()与run()

      start() 启动线程并执行相应的run()方法
      run() 子线程要执行的代码放入run()方法

getName()和setName()

 getName() 获取此线程的名字
 setName() 设置此线程的名字

isAlive()

是判断当前线程是否处于活动状态。活动状态就是已经启动尚未终止。

currentThread()

返回代码段正在被哪个线程调用

sleep()

主要的作用是让当前线程停止执行,把cpu让给其他线程执行,但不会释放对象锁和监控的状态,到了指定时间后线程又会自动恢复运行状态

注意:线程睡眠到期自动苏醒,并返回到可运行状态,不是运行状态。sleep()中指定的时间是线程不会运行的最短时间。因此,sleep()方法不能保证该线程睡眠到期后就开始执行

yield()

中文意思:放弃,屈服
一个线程调用yield()意味着告诉虚拟机自己非常乐于助人,可以把自己的位置让给其他线程(这只是暗示,并不表绝对)。但得注意,让出cpu并不代表当前线程不执行了。当前线程让出cpu后,还会进行cpu资源的争夺,但是能不能再次分配到,就不一定了

 

getPriority()和setPriority(int newPriority)

这两个方法是用于获取当前和设置线程的优先级。优先级高的线程得到的cpu多。也就是说,两个等待的线程,优先级高的线程容易被cpu执行。

默认情况下,线程的优先级是5。线程的优先级分为1~10等级。

getId()

取得线程唯一标识

yield()

yield() 暂停当前方法,释放自己拥有的CPU,线程进入就绪状态。

join()

所属线程对象x正常执行run,当前线程z无限等待直到执行完。常用于需要子线程的执行结果

interrupted()

interrupted()是静态方法:内部实现是调用的当前线程的isInterrupted(),并且会重置当前线程的中断状态

isInterrupted()是实例方法,是调用该方法的对象所表示的那个线程的isInterrupted(),不会重置当前线程的中断状态

它们的作用是判断线程是否是停止状态

isDaeMon、setDaemon(boolean on)

java线程有两种,一种是用户线程,一种是守护线程。守护线程是一个特殊的线程,任何一个守护线程都是jvm中所有非守护线程的保姆。当进程中不存在非守护线程时,守护线程会自动销毁。典型的守护线程就是垃圾回收线程。

第一个是判断线程是不是守护线程,第二个是设置线程为守护线程,必须在线程start之前setDaemon(true)。

stop()

强制停止,已废弃

可能释放锁导致数据不对。

可能导致清理工作做不好。

suspend和resume

暂停和恢复

会造成独占(永远的暂停)(方法)

造成不同步

 

 

文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。

原文链接:fantianzuo.blog.csdn.net/article/details/102669903

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。