当前位置:首页>开发>正文

Tomcat中的Servlet异步是怎么实现的 异步电动机的原理

2023-05-08 03:50:38 互联网 未知 开发

 Tomcat中的Servlet异步是怎么实现的 异步电动机的原理

Tomcat中的Servlet异步是怎么实现的

有时Servlet在生成响应报文前必须等待某些耗时的操作,比如在等待一个可用的JDBC连接或等待一个远程Web服务的响应。对于这种情况servlet规范中定义了异步处理方式,由于Servlet中等待阻塞会导致Web容器整体的处理能力低下,所以对于比较耗时的操作可以放置到另外一个线程中进行处理,此过程保留连接的请求和响应对象,在处理完成之后可以把处理的结果通知到客户端。

下面先看Servlet在同步情况下的处理过程,如图所示,Tomcat的客户端请求由管道处理最后会通过Wrapper容器的管道,这时它会调Servlet实例的service方法进行逻辑处理,处理完后响应客户端,整个处理由Tomcat的Executor线程池的线程处理,而线程池的最大线程数使有限制的,所以这个处理过程越短、越快把线程让回线程池就越好。但如果Servlet中的处理逻辑耗时越长就会导致长期地占用Tomcat的处理线程池,影响Tomcat的整体处理能力。

为了解决上面的问题引入了支持异步的Servlet,同样是客户端请求到来,然后通过管道最后进入到Wrapper容器的管道,调用Servlet实例的service后,创建一个异步上下文将耗时的逻辑操作封装起来,交给用户自己定义的线程池,这时Tomcat的处理线程就能马上回到Executor线程池,而不用等待耗时的操作完成才让出线程,从而提升了Tomcat的整体处理能力。这里要注意的是,由于后面做完耗时的操作后还需要对客户端响应,所以需要保持住Request和Response对象,以便输出响应报文到客户端。

再结合一个简单的异步代码来看Tomcat对Servlet异步的实现:

public class AsyncServlet extends HttpServlet {

ScheduledThreadPoolExecutor userExecutor = new ScheduledThreadPoolExecutor(5)

public void doGet(HttpServletRequest req, HttpServletResponse res) {
AsyncContext aCtx = req.startAsync(req, res)
userExecutor.execute(new AsyncHandler(aCtx))
}

}

public class AsyncHandler implements Runnable {

private AsyncContext ctx

public AsyncHandler(AsyncContext ctx) {
this.ctx = ctx
}

@Override
public void run() {
//耗时操作
PrintWriter pw
try {
pw = ctx.getResponse().getWriter()
pw.print("done!")
pw.flush()
pw.close()
} catch (IOException e) {
e.printStackTrace()
}
ctx.complete()
}
}

我们创建一个AsyncServlet,它定义了一个userExecutor线程池专门用于处理该Servlet的所有请求的耗时的逻辑操作。这样就不会占用Tomcat内部的Executor线程池,影响到对其他Servlet的处理。这种思想有点像资源隔离,耗时的操作统一由指定的线程池处理,而不要影响其它耗时少的请求处理。

Servlet的异步的实现就很好理解了,startAsync方法其实就是创建了一个异步上下文AsyncContext对象,该对象封装了请求和响应对象。然后创建一个任务用于处理耗时逻辑,后面通过AsyncContext对象获得响应对象并对客户端响应,输出“done!”。完成后要通过complete方法告诉Tomcat内部我已经处理完,Tomcat就会请求对象和响应对象进行回收处理或关闭连接。

异步电动机的原理

在电机定子绕组中通入对称三相电,产生同步旋转磁场,这个旋转磁场切割其转子导体并在导体内感应电势而形成电流,此时转子绕组由于有电流通过,就会受到磁场电磁力的作用而旋转起来。 并且转子的实际转速总是落后于同步转速,存在着一个转速差,正是基于这一转速差,也即异步,才使得电机的转子得以不断切割同步磁场的磁力线而保持持续运动!这就是异步电动机的原理!

异步电机的工作原理

三相交流异步电动机工作原理:(1)当三相异步电机接入三相交流电源时,三相定子绕组流过三相对称电流产生的三相磁动势(定子旋转磁动势)并产生旋转磁场。(2)该旋转磁场与转子导体有相对切割运动,根据电磁感应原理,转子导体产生感应电动势并产生感应电流。(3)根据电磁力定律,载流的转子导体在磁场中受到电磁力作用,形成电磁转矩,驱动转子旋转,当电动机轴上带机械负载时,便向外输出机械能。电机的转速(转子转速)小于旋转磁场的转速,从而叫为异步电机。它和感应电机基本上是相同的。s=(ns-n)/ns。s为转差率,ns为磁场转速,n为转子转速。
三相异步电动机的转速永远低于旋转磁场的同步转速,使转子和旋转磁场间有相对运动,从而保证转子的闭合导体切割磁力线,感生电流,产生转矩。转速的差异是异步电机运转的必要条件。在额定情况下,转子转速一般比同步转速低2-5%。

异步电动机的工作原理是什么??

说到感应异步电机的基本工作原理,不得不提到阿拉哥圆盘:

一个铜制圆盘保持可以自由旋转,一块U型永久磁铁将铜盘夹在磁铁开口中。假如磁铁在不触碰铜盘的情况下移动,则铜盘将以同样方向旋转。且铜盘的旋转速度小于磁铁的旋转速度。

旋转磁铁产生的旋转磁场,即感应电机定子中通三相电后产生的旋转气隙磁场,铜盘即电机中的转子。转子与旋转磁场的转速不同,所谓异步电机。

异步电动机工作原理?

当异步电动机接入三相交流电后,定子绕组中将产生三相对称电流,气隙中将建立一个旋转磁场,这个旋转磁场将在转子中感应出相应的电流,该电流与气隙中的旋转磁场相互作用给产生电磁转矩,从而电机就转起来了。

三相异步电动机原理

工作原理: 三相异步电机是感应电机,定子通入电流以后,部分磁通穿过短路环,并在其中产生感应电流。短路环中的电流阻碍磁通的变化,致使有短路环部分和没有短路环部分产生的磁通有了相位差,从而形成旋转磁场。通电启动后,转子绕组因与磁场间存在着相对运动而感生电动势和电流,即旋转磁场与转子存在相对转速,并与磁场相互作用产生电磁转矩,使转子转起来。

步骤: (1)当三相异步电机接入三相交流电源(各相差120度电角度)时,三相定子绕组流过三相对称电流产生的三相磁动势(定子旋转磁动势)并产生旋转磁场,该磁场以同步转速n0沿定子和转子内圆空间作顺时针方向旋转。
  (2)该旋转磁场与转子导体有相对切割运动,根据电磁感应原理,转子导体(转子绕组是闭合通路)产生感应电动势并产生感应电流(感应电动势的方向用右手定则判定)。
  (3)根据电磁力定律,在感应电动势的作用下,转子导体中将产生与感应电动势方向基本一致的感生电流。载流的转子导体在定子产生的磁场磁场中受到电磁力作用(力的方向用左手定则判定),电磁力对电机转子轴形成电磁转矩,驱动电机转子沿着旋转磁场方向旋转,当电动机轴上带机械负载时,便向外输出机械能。由于没有短路环部分的磁通比有短路环部分的磁通领先,电机转动方向与旋转磁场方向相同。

  详细参考百度百科

最新文章

随便看看