多线程中的基本概念

1、休眠(sleep) 

让任务在给定的时间段内中止执行,当等待的时间到了,又能继续执行。如sleep(1000),中止执行一秒

2、优先级(priority)

线程的优先级将该线程的重要性传递给了调度器,尽管cpu处理现有线程集的顺序不是确定的,但是调度器将会倾向于让优先权最高的线程先执行。然而这并不意味着优先权较低的线程将得不到执行。优先级较低的线程仅仅是执行的频率较低。(说明java中的多线程调度方式采用的是抢占式)

使用getPriority()和setPriority(int)来修改优先级。

在绝大多数情况下,所有线程都应该以默认的优先级运行,试图操纵线程优先级通常是一种错误

3、让步(yield)

如果知道已经完成了在run()方法的循环的一次迭代过程中所需的工作,就可以给线程调度机制一个暗示:你的工作已经做得差不多了,可以让别的线程使用cpu了。这个暗示用yield()方法来做出。备注:这只是一个暗示,没有任何机制保证它将会被采纳。

4、后台线程(daemon),也称守护线程

后台线程是指在程序运行的时候在后台提供一种通用服务的线程,并且这种线程不属于程序不可或缺的部分。因此,当所有的非后台线程结束时,程序也就中止了,同时杀死进程中的所以后台线程。反过来说,只要有有任何非后台线程运行,程序就不会终止。

最直观的后台线程-->gc(垃圾回收机制)

将一个线程设置为后台线程的方式是必须在线程启动前调用setDaemon,否则会报错IllegalThreadStateException

5、加入一个线程(join)

一个线程可以在其他线程之上调用join()方法,其效果是等待一段时间直到第二个线程结束才能继续执行。如果某一个线程在另一个线程t上调用t.join(),此线程将被挂起,直到目标线程t结束才恢复(即t.isAlive()返回为假)。

也可以在调用join()时带上一个超时参数(单位可以是毫秒,也可是毫秒和纳秒),这样如果目标线程在这段时间到期还没有结束的话,join()方法总能返回。

6、捕获异常

由于线程的本质特性,使得你不能捕获从线程中逃逸的异常,一旦异常逃出任务的run()方法,它就会向外传播到控制台,除非采用特殊的步骤捕获这种错误的异常,在javaSE5之后,可以使用Executor来解决这个问题。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值