温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
大家好,我是海波老师,我们继续来讲Java语法中的线程,不过呢,我们这一回啊,咱们讲一下线程休眠的问题,那么这里的休眠啊,简单理解就是让当前运行的线程啊睡一会儿,那么等醒过来以后呢,再继续执行的意思,诶老师那怎么理解这个操作呢?那毕竟啊,计算机应该一直执行代码嘛,对不对,怎么会睡一会儿呢?其实这里的睡一会儿呢,是Java语法中提供了一种能够让线程有机会和其他线程交互的机制,否则呀,两个线程你做你的,我做我的,咱们一直不停下来,我们怎么知道你的某件事情做完了呢?那么两个线程又该如何交互呢?对不对?所以啊,我稍微的睡一会儿,你可能就做完了,对不对?这就好比什么呢?诶,你给你朋友打电话,电话正在通话中,你会怎么办?你会一直不停的去打吗?不会吧?既然对方在通话当中,你是不是应该稍微的等一会儿再给他打电话,对吧?哎,一个意思,那么我们这里呢,把这个代码呢,我们复制一下,我们把这个呢,改成我们的零三,然后点击OK,点击OK以后把这个改成零三啊把这个咱们前面的东西咱们全去掉,然后把这个线程呢,我们也暂时先去掉就可以了,去掉以后把这个去掉啊,我们写上它,咱们叫做休眠啊休眠。
01:12
好了,那我写完了之后怎么办呢?我在这里面啊,咱们加一句话叫TH点,我们有个叫sleep方法,这个sleep呢就是休眠的意思,我把这个时间呢,写上一个3000,它的单位呢是毫秒,所以3000毫秒呢就是三秒钟,所以我们这里写上它,哎,咱们休眠啊,咱们的三秒钟。好了,那现在呢,我们就准备我们执行一下,我们点击右键,右键以后咱们看看控制台,你会发现控制台上什么都没有,有个红色的钮,诶过了一段时间以后,这个闷线程就执行完毕了,这个红钮就关闭了。老师,什么意思啊,就是因为我们当前运行的这个主线程啊,它不是一上来就开始呢,往下执行,它执行到这行代码的时候,它会先睡一会儿。
02:02
他睡一会儿以后,让别的线程有机会执行对不对,诶到了三秒钟我自己醒过来了,我就继续执行就可以了,那这样的话,我们在这个地方就打印了,打印完以后论方法结束,虽然咱们整个进程呢就结束了啊,所以这个方法呢,相对来说是比较简单的,但是也比较特殊,因为它是一个静态方法,它和任何的对象都没有关系,它只和当前的类有关系,这就意味着我们在哪一个线程中调用这个方法,哪个线程就会休眠啊,就会休眠,那么这时候线程的状态就会变成定时等待状态,这个咱们之前提到过啊,就是你的sleep它会有个时间,这个时间就会有个状态的变化,叫定时等待,那么一旦三秒钟到达的时候,那么线程就又恢复成可运行状态,一旦他抢到了CPU的执行权,我们的线程就可以继续执行了啊,那么一般情况下,如果我们想要在代码中每隔一段时间执行一段逻辑呢?我们就会采用这种方式。比如。
03:02
我想每隔一秒钟的时间打印一个字符串怎么办?诶大家可以看到,我现在就写上一个well,然后写上一个true,诶什么意思啊,就是有条件的一个循环,这个条件我不跳出,我把这个休眠时间呀,我放到这里,那这样的话,我每一秒钟就执行一段逻辑,我把这个呢,我们拷贝过来,拷贝过来以后大家会发现,只要我们去休眠一秒钟,就打印这个字符串,然后呢,我再回到这个循环,我再去休眠一秒钟,再去打印字符串,我再回过头来,我再休眠一秒钟,诶这就达到了一个周期性执行的概念,对不对?那好,咱们来运行一下,看一看结果来运行,运行以后大家看结果,你就会发现我们这里,诶你看打印完了,稍微等一会儿又打印了,这就是每一秒钟打印一个字符串,它就是这么完成的啊。好了,同学们,我们的这个休眠咱们先说到这里。
我来说两句