00:01
不过啊,这个现在的程序还是有问题,我不管你底层做了什么工作啊,对于我用户来说我感觉不好。怎么感觉不好了?我还得等。是不是而等的过程里面,我们又知道实际上当前。它是被阻塞了,它仍然被当前so的这个线程仍然是被占用的,所以无论从性能上还是从用户体验上来说,这种都不好。现在的代码都不好。那是。那是因为我们的异步线程平时就不是这样用的。他为什么会出现?阻塞的情况,其实原因很简单。什么,你看着。因为这里边儿用到什么了,标准输出流了。你用到request response了。
01:03
你注意。只要你。只要我们的。异步对象相关的这些对象,什么叫相关的对象?相关的请求,相关的响应只要被占用,那么这个异度对象就不会被销毁。它不会被销毁。那么。那么。我们的主线程就不会结束。我们的主线程就不会结束。所以啊,我们要想使主县城结束。把这个线程。给它释放掉,马上释放掉,仅仅让他起一个什么作用,让这个主线呢,仅仅起一个启动了这个。耗时线程尽然的启动,仅仅起这个作用的话,我们在这个耗时的子线程中是不能使用request response。
02:11
你要使用它。那么这个东西就结束不了。所以我们真正在项目中是怎么用的,我们是这样用的。大家应该以前上网啊,根据你以前上网的经验,你应该遇到过这种情况,大家想想啊,你遇到没有遇到过这种情况,你注册完一个用户以后。你这边一注册,注册完了,他说让你登录到邮箱。点那个。什么什么?给你发了一个链接,让你确认一下,一个确认链接。应该见过吧?他就是。我们一步。Solid。或者说我们异步处理的一种应用。
03:05
好,我们现在就来写这个代码,你看看这个写起来是什么情况啊。也就是我们真正对异步处理的应用,平常的应用是怎么写的?好,我们来看啊。你这边我这删掉了啊。你这边开启了啊,一步对象已经开启了啊,紧接着开启它,这是个耗时的运算对吧,耗时运算里边我要想让他。一启动,把这个耗时运算一启动,马上它就结束了,那么我在这个里边是。不能让他使用,不是说不能使用啊,而是。
04:06
应该让他尽快把request response给它释放掉。那怎么做?我这个给他删掉,我把这个删掉。那这个也删掉。这个也删掉删掉,你都删了,都删了,他还这结果还怎么返回呢,你注意request response。他不能用,但是。由request response获取的其他对象是可用的,比如说。ac.get request是吧?点get还真得。Ah get request。
05:04
哎,Tdp强壮。Request点。Get session get session,然后session.set attribute,将来这个settribute里边放什么,我就是放这个结果呢。我就是放这个结果的,Sum等于该等sum等于了,萨啊萨,我这放这个结果呢。你这不是执行完毕了吗?对不对。好。我给你设一个超市视线。
06:03
启动之前嘛,设一个超时时间ac.set timeout。几秒?我们还剩三秒钟,还剩三秒,你看着啊,还剩三秒。啊,还设三秒钟。不说了。这个不是我这儿。我想想。我想想啊。笑笑。这设上设上这个超市。
07:01
紧接着我给这儿。呃,输出啊,这我写上主线程运行结束是吧。再写一句话吧。请到邮箱。啊,什么查看注册。比如正式注册啊。注册。情况诶。请到邮箱查看注册情况,你这注册了啊,这注册呢,你这边点了这些都都都注册了,呃,注册注册成功了没有。让你到邮箱查看一下这个运算过程。假设就是。而往数据库写数据,什么什么,这这个很耗时。
08:01
到邮箱那好,我现在有邮箱吗。现在有印象没有没有。我来一个页面,这假设就是我们那个邮箱,我给你发过去一个链接呀,是不是啊,来一个JSP。email.jsp假设你就跳转到这个位置了呀,是吧。我这写了。写什么呢?啊,我从session里边。获取这个。Sum的值。从session里边获取这个sum的值。呃,如果。嗯。
09:01
session.get。Attribute some。我们需要是吧。如果sum等于等于。这不是从从一加到十是吧,从一加到十是几啊,是不是5050。呃,如果他是不是5050了,从一加到100是5050啊,他是55吧,是不是你你想想呗,一加十。啊,一加十是11,一共几对五对嘛,不是55嘛,对不对,11乘五嘛,啊不错啊55啊,如果它是55怎么样,我们就out就out点。
10:10
Print。嗯。比如这个是注册成功。是吧?注册失败。请重新注册。是不是好,你看的这个程序它是怎么样运行的,假设这个注册啊,假设现在这个是注册。
11:04
Some。好三秒钟,然后他说了,哎,请你到邮箱里边查看注册情况,好,我们现在就到邮箱,邮箱在哪呢?遗憾在这。是不是这个没点JP啊走。是不是注册成功了,对不对,这种场景大家应该能想象到吧,我们。平时只不过你注意啊,只不过这个邮箱,人家一般邮箱给你发了一个链接,你点一下就进到进到它指定那个页面了,其实就这这样一个页面。
12:00
其实就是这样一个页面。那OK了,那么这就是我们。真正啊。在。项目中如何使用?这个异步。So异步处理如何使用?So异步处理就这样用的,这个异步里边不能使用什么,你out,你说想想像我们之前那样out,都给它输出这里边,计算结果都给它输出到那里边,那肯定不行,用户体验会很不好,用户体验很不好,当然现在用户体验啊,我给你这写了个三秒,你感觉时间有点长,你可以自己调整这个时间。可以自己试一下,我说让你能看到这儿有这样一个过程。OK了。OK了,这就是我们。真正的。对于solid异步处理的应用。
13:03
需要你专门再跳转到另外一个页面来查看运异步子线程运算的结果。
我来说两句