线程控制方法

1.sleep

Thread.sleep(1000):

  • 静态方法,
  • 休眠时间单位时ms,
  • 使用位置,线程run方法内,
  • 调用线程休眠方法,线程进入阻塞状态,待线程休眠结束,进入就绪状态
@Override
public void run() {
    while (true){
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("+Thread.currentThread().getName()+);
    }
}

 

2.join

  • 创建线程对象调用join(),其作用时该线程执行完毕后,其它线程才会执行,
  • 如果在某个线程在另一个线程t上调用join,此线程将被挂起,知道目标线程t结束才恢复(即t.isAlive()返回为假)
  • 也可以在调用join(2)时,带上一个超时参数(单位可以是毫秒,或者纳秒),这样如果目标线程在这段时间到期时还没有结束的话,join()方法总能返回,
  • 对join()的方法可以被中断,做法时在调用线程上调用interrupt()。

3.yield

  • Thread.yield()的调用时对线程调度器(java线程机制的一部分,可以将当前线程的CPU转移给另外一个线程)的一种建议
  • 当前线程暂停(建议,暗示,不一定会执行),不是阻塞线程,是将线程转为就绪状态
  • 如果调用了yield方法之后,没有其它等待执行的线程,当前线程会马上回复执行

4.setDaemon

  • 可以将指定的线程设置成后台线程,所谓的后台线程,是指在程序中运行的时候在后台提供一种通用的服务线程,并且这种线程不属于程序中不可或缺的部分,
  • 当所有的非后台线程结束后,后台线程也中止了(无论后台线程是否执行完),同时会杀死所有的后台线程
  • 可以调用isDaemon()确定当前线程是否是后台线程

5.interrupt

  • 并不是中断线程,而是需要被中断线程自己处理

  • @Override
    public void run() {
        while (!Thread.currentThread().isInterrupted()){
            try {
                sleep(1200);
            } catch (InterruptedException e) {
                System.out.println("catch处理前: "+currentThread().isInterrupted());
                currentThread().interrupt();
                e.printStackTrace();
                System.out.println("catch处理后:"+currentThread().isInterrupted());
            }
        }
    }

     

6.stop

  • 结束线程,不推荐使用,已废弃

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值