浅谈Java中spring 线程异步执行
实际上,它存在的主要原因是为了在使用线程池的时候,将对Java5的依赖抽象出来。最初创建TaskExecutor是为了在需要时给其他Spring组件提供一个线程池的抽象。但是,它还是支持对并发总数设限,当超过线程并发总数限制时,阻塞新的调用,直到有位置被释放。有另一个备选, ThreadPoolTaskExecutor类,它暴露了Executor的配置参数作为bean属性。这个实现实际上是Quartz的SimpleThreadPool类的子类,它会监听Spring的生命周期回调。它不支持任何对java.util.concurrent包的替换或者下行移植。这个实现使用一个TimerTask作为其背后的实现。它和SyncTaskExecutor的不同在于,方法调用是在一个独立的线程中进行的,虽然在那个线程中是同步的。案例注册TaskExecutor使用:程序不会等到10个线程都跑完才返回结果,不是阻塞程序,返回结果后,线程仍然在执行。
用户评论