00:01
Future listener机制。当future对象刚刚创建的时候,处于非完成的状态,调用者可以通过返回的China future来获取操作执行的状态注册,大家看这里注册监听函数来执行完成后的操作。那么常见的。操作有哪些呢?比如说it done这个方法呢,就是用来判断当前操作是不是已经完成了,注意完成和完成成功是两个意思,所以说。呃,还有一个方法呢,就是叫is access,这个方法呢,来判断已完成的当前操作是否已经成功。如果失败的话呢,咱们可以调用这个get Co方法来获取已完成的当前操作失败的原因。还有is cancel来判断已完成完成的当前操作是否已经被取消。那么还有一个特别重要的方法就是ADD listener,这个方法呢,可以来注册监听器。
01:08
对,那通过这个监听器呢,它可以去监控我们通过这个监听器,我们在这里面去可以判断是成功了还是失败了,也就是说我们打开这边,我们可以看到。在China future我们找一下。进到这里面去。我们来看一下它的结构,大家看这里面是不是有listener呢?有listener,然后呢,我们还可以去进行这个,呃,成功或者是失败的一些判断,那现在呢,我们这样子就在这个基础上呢,我们来举一个例子。就是现在我们看这么一个案例。在客户端呃,在客户端这边呢,我们绑定一个端口监听哈,这边是绑定端口,是异步操作,当绑定操作呃,处理完成后,就可以调用相应的监听器处理逻辑。
02:01
呃,那么我们来看一下。在哪里呢?我们随便找一个啊,我们找到一个方法吧,在。这边来找一个。SR。S,这边大家可以看到有一个band,在band呢,它是启动服务并绑定一个端口,同时大家也可以看到这边是返回一个China future对象。好,那现在呢,我们想判断到底有没有成功,我们可以注册监听器给什么呢?CF注册监听器。监听器OK,然后呢,监控监控。啊,监控我们关心的事件。关心关心。关心的事件。好,我们来看一下怎么做呢,非常简单。cf.listener然后六一个China,六一个China。
03:01
哎,这边六一个。China。Future listener,那这里面它会要求我们去重写一个方法叫operation completely,在这里面呢,我们就可以来做相应的判断来看一下。我们做这样判断。如果CF点。Is。Access我们就提示他一句话,比如说我们说绑定什么什么。成功。监听端口吧,监听端口66686668成功。如果失败的话呢,诶我们这边呢,可以给他提示另外一句话。就是监听端口失败。监听端口失败。好的,我们现在呢,来测试一下,看看我们这写的这个监听器能否生效。我们来运行一下客户端,服务器端运行。
04:00
运行起来,那运行起来过后呢,我们可以看到大家可以看到这边,诶看监听端口6668成功是不是,也就是说你看我没有去调用这个方法吧。这实际上就是说,当我们这个China future,它返回的这个CF,他会因为他已经注册了一个监听器嘛,如果我们这个绑定真的成功了的话呢,就会触发我们这个operation completely,然后在这边我们通过is access去判断是成功了还是失败了。对,所以说呃,在我们。Future listener里面呢,我们可以对这个future对象增加我们的listener来做相应的处理,好就这么简单,那它好处是什么呢?我们来看一下。相比传统的阻塞IO而言,执行IO操作后,线程它就会被阻塞在这里,直到操作完成。一步处理的好处是不会造成线程的阻塞,线程在IO操作期间就可以执行别的程序,在高并发情况下会更加稳定并具有更高的吞吐量啊。所以说这种机制呢,大家要知道哈,就是返回一个future。
05:09
对象,我们然后可以在这个future对象加listener。然后再根据监听到的事件做相应的处理。对,好,同学们,关于我们这个feature机制,我们就跟大家说到这里。
我来说两句