控制线程

本文包含:

  1. join 线程
  2. 后台线程
  3. 线程睡眠:sleep
  4. 线程让步:yield
  5. 改变线程优先级

1. join 线程

join() 方法用于让一个线程等待另一个线程完成。当在某个程序执行流中调用其它线程的 join() 方法时,调用线程将被阻塞,直到被 join() 方法加入的 join() 线程执行完为止。
join() 方法通常由使用线程的程序调用,以将大问题划分成许多小问题,每个小问题分配一个线程。当所有的小问题都得到处理后,再调用主线程来进一步操作。

join() 方法有如下三种重载新式:
join() :等待被 join 的线程执行完成
join(long millis):等待被 join 的线程的时间最长为millis 毫秒。如果在millis 毫秒内被joins 的线程还没有执行结束,则不再等待。
join(long millis,int nanos):等待被 join 的线程的实际最长为millis 毫秒加 nanos 毫秒。

2. 后台线程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 线程睡眠:sleep

如果需要让当前正在执行的线程暂停一段时间,并进入阻塞状态,则可以通过调用 Thread 类的静态sleep() 方法来实现。sleep() 方法有两种重载形式:
在这里插入图片描述
与前面类似的是,程序很少调用第二种形式的 sleep() 方法。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

4. 线程让步:yield

在这里插入图片描述在这里插入图片描述
若程序中第二行、第三行粗体字代码处于注释状态,两个线程优先级一样,运行结果如下图所示:
在这里插入图片描述
即当一个线程使用 yield() 方法暂停后,另一个线程就会开始执行。
如果将注释去掉,即为两个线程设置不同的优先级,运行结果如下图所示:
在这里插入图片描述
关于 sleep() 方法和 yield() 方法的区别如下:
在这里插入图片描述

5. 改变线程优先级

每个线程默认的优先级都与创建它的父线程的优先级相同,在默认情况下,main 线程具有普通优先级,而 main 线程创建的子线程也具有普通优先级。
在这里插入图片描述
下面程序使用 setPriority() 方法来改变主线程的优先级,并使用该方法改变了两个线程的优先级,从而可以看到高优先级的线程将获得更多的执行机会。
在这里插入图片描述在这里插入图片描述在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值