JAVA自学笔记,操作线程的方法

线程的休眠

一种能控制线程行为的方法是调用sleep方法,sleep方法需要一个参数用于执行该线程休眠的时间,该时间以毫秒为单位,它通常是在run方法内的循环中被使用。

try{
	Thread.sleep(2000)
}catch(InterruptedException e){
	e.printStackTrace();
}

上述代码会使线程在2s之内不会进入就绪状态,由于sleep方法的执行有可能抛出InterruptedException异常,所以将sleep方法的调用放在try…chatch块中。虽然使用了sleep方法的线程在一段时间内会醒来,但是并不能保证它醒来后进入运行状态,只能保证它进入就绪状态。
我们来看一个小例子。
在这里插入图片描述
在这里插入图片描述
在这段代码中,程序每过一秒会输出一次变量的值,也就是10.可以看到sleep是放在run方法内的try…catch语句块中的。

线程的加入

如果当前某程序为多线程程序,假如存在一个线程A,现在需要插入线程B,比要求线程B先执行完毕,再继续执行线程A,此时可以使用Thread类中的join方法来完成,这就好比此时你正在玩电脑,你的外卖到了。你必须先去取外卖,然后再回来玩电脑。
当某个线程使用join方法加入另一个线程时,另一个线程会等待该线程执行完毕后再继续执行。
在这里插入图片描述
在本例中创建了两个线程A和B,并添加了计数器count当count的值等于5时,线程B调用join方法加入线程A。当线程B的if语句满足条件后,线程A继续执行。

线程的中断

以往有的时候会使用stop()方法停止线程,但JDK早已废除了stop方法,不建议使用stop方法来停止一个线程的运行,现在提倡在run方法中使用无线循环的方式,然后使用一个布尔型标记控制循环的停止。像上面的例子中,使用if语句规定了一个计数器,如果计数器满足条件,则会终止循环。
如果线程是因为使用了sleep或wait方法进入了就绪状态,可以使用Thread类中的interrupt方法使线程离开run方法,同时结束线程,但程序会抛出InterrputedException异常,用户可以再处理该异常时完成线程的中断业务处理。
在这里插入图片描述
在这里插入图片描述
在本例中,由于调用了interrupt方法,所以抛出了InterruptException异常。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值