00:00
好,那么我们就先这个关于线程通讯这个例子呢,就说到这儿了,这个说完以后呢,咱们紧接着说一个面试题,在我们这个多线程这一章当中呢,有好几个面试题,明天呢,咱们总结一下啊。总结一下看都有哪几个,这呢,咱们就是遇到哪个就说哪个在这这个面试题什么呢?就是来说一下这个,呃,Sleep方法啊和我们wait方法的异同,这个题呢很重要,所以呢,所以呢,明天会考是吧?嗯,那么sleep和wait方法的异同来说一下吧,先说这个相同点吧,什么相能点啊,哎只要执行到sleep或者wait的时候呢,都可以让咱们当前这个线程呢,进入阻塞状态是吧?哎,都可以啊,一旦哎执行这个方法都可以使得哎当前的线程。
01:08
哎,进入阻塞状态,哎,这呢是相同点,哎其实呢,主要相同点也就这一个啊,然后呢,我们来看这个叫不同点。不同点咱们就层层深入,一点点去说。首先第一个点。哎,我们关注一下这两个方法定义的位置一样吗?一样哎,不一样啊,说两个方法声明的这个位置就不一样,哎具体来说呢,哎,Re的类种,哎声明啊,还是个静态的,哎,Sleep方法,哎然后呢,我们这个object类中,呃,声明的wait。哎,这呢是不一样的,那么这个不一样,其实呢,就紧接着呢,会影响到第二个事情。
02:00
对,就是他们调用的时候,哎,调用的这个呃,叫范围或者是要求是不一样的,什么意思呢。哎,我说呀,这个sleep的调用啊,其实没有任何要求。凡是你想让这个线程睡一会儿你就掉啊,而我们这个胃呢,是不是一定要在同步里边用啊。哎,这呢,有个这样的一个要求啊,就是他们调用的一个呃范围或者叫要求吧,是不一样的,这个sleep方法,只要你想调你就可以调啊,也就是说呢,我们这个sleep方法呢,是可以在任何哎需要的这个场景下呢调用。哎,尝一下调用,而我们这个位的方法,它呢,必须是由我们这个同步监视器调的,沿G呢,这个位的方法说必须,哎使用在同步代码块或同步方法中。哎,有这样的一个限制。
03:00
哎,这个点呢是不一样的啊,嗯,这是这个事儿的,然后再接着。再接着还有什么别的不同啊。诶对,这也是一个非常关键的一个点啊,就是我们这个sleep呢,你在哪用都行,Wait呢只能用在同步代码块或同步方法,那假设呢,他俩现在就都用在哎同步代码块或同步方法当中的时候,哎又涉及到一个不同啊,就是关于是否释放,诶我们叫同步监视器的问题。那这里边儿我们提到说,如果两个方法都使用在。哎,这个同步代码块或同步方法中,诶这呢区别呢,就是sleep方法,它呢,哎不会释放。哎,同步监视器或者我就直接不会释放锁了啊,而我们这个weight,哎它呢,哎会。
04:06
诶会,诶释放锁锁就是同步监视器的意思,对不是不是咱们这个lock啊,哎,这个会释放这个同步加声器,哎这呢就是它俩的这个区别。这个应该也不难理解是吧?哎,这个大家呢,关于二者的这个相同点和不同点呢,需要掌握,这个在面试的时候呢,也经常会问啊,哎,咱们当时讲这个说凡是比较某个结构和某个结构异同的有方面呢,呃,有个套路啊,一种套路呢,就是这两个东西呢,长得很像,哎,像这个throw和ROS有什么区别啊,Final和final有什么区别,重写跟重载有什么区别啊,String和string buffer有什么区别,A release和link有什么区别等等。啊,Collection和collections这些都属于长得比较像,长得不像的,这个呢,其实不多啊,你像这呢,就算其中一个啊,长得不像还让你比说明呢,他们确实在使用上呢,呃,可能会有一些共性是吧,这都能阻塞,但具体呢,用法上又不一样,哎,需要你去比较,这个呢,需要大家掌握啊,这是关于这个二者的一个区别。
我来说两句