java多线程(二)Thread类常用方法

基于白嫖黑马程序员白嫖视频:全面深入学习java并发编程,java基础进阶中级必会教程

1 start

  • start方法是线程运行的方法,但是不是马上运行,而是告诉任务调度器,该线程可以被执行了;
  • start方法只能启动一次;

2 sleep

  • 从线程从Running状态进入Timed Waiting状态;
  • 参数是毫秒值;
  • 可能会抛出InterruptedException异常;当在休眠时被interrupt()了;
  • Thread.sleep()在哪个线程里面被调用,哪个线程就休眠多久;
  • 实际场景:当有while(true)这样的监听结构的时候,最好设置sleep;

3 interrupt

  • 打断sleep:当在sleep中时线程被调用interrupt()时,就马上会放弃暂停的状态并抛出InterruptedException。但是isInterrupted还是false
  • 打断join:当线程以join()等待其他线程结束时,当它被调用interrupt(),它与sleep()时一样,会马上跳到catch块里。但是isInterrupted还是false
  • interrupt() 方法只是改变中断状态而已,它不会中断一个正在运行的线程;
  • 对于Running的线程,仅仅是将其isInterrupted()设置为true
  • 和interrupted区别,interrupted获取完之后会清除打断标记;

4 yield

  • 调用该方法使得该进程从Running进入Runnable状态,然后执行其他线程;
  • 被naive修饰,具体实现依赖OS的任务调度器;

5 setPriority

  • 设置线程的优先级,一共10级(1-10),最好使用MIN_PRIORITY、NORM_PRIORITY、MAX_PRIORITY来设置;

6 join

  • 用来同步线程,比如t1.join(),就是本程序等待t1执行结束了,再执行t1.join()下面的代码程序;
  • 理解:t1在干其他的事情,等他干完了,就加入(join)回来,我继续执行。
  • join(long n)是有时限等待,等了n毫秒之后如果没有执行完,还是继续执行我后面的代码;

7 setDaemon

  • 设置守护线程,只要其他非守护线程运行结束了,它就被会强制结束;
  • 典型引用:JVM的垃圾回收器;

stop(不建议使用)

suspend(不建议使用)

resume(不建议使用)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值