Jit*_*dav 0 java spring asynchronous spring-mvc
我编写了一段代码来检查@AsyncSpring框架中的注释行为.
@RequestMapping( value="/async" , method = RequestMethod.GET)
public ModelAndView AsyncCall(HttpServletRequest request)
{
async1();
async2();
return new ModelAndView("firstpage");
}
@Async
private void async1(){
System.out.println("Thread 1 enter");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Thread 1 exit");
}
@Async
private void async2(){
System.out.println("Thread 2 enter");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Thread 2 exit");
}
Run Code Online (Sandbox Code Playgroud)
此代码的输出如下.
Thread 1 enter
Thread 1 exit
Thread 2 enter
Thread 2 exit
Run Code Online (Sandbox Code Playgroud)
通过查看此输出,似乎这两个@Async函数调用本身是同步的.
据我所知,这两个是不同的线程,应该自己异步运行.
根据弹簧代理调用日志更改代码后打印就像.
主线程名称:http-apr-8080-exec-8
Thread 1 enter
Async-1 Thread Name: neutrinoThreadPoolExecutor-1
Thread 1 exit
Thread 2 enter
Async-2 Thread Name: neutrinoThreadPoolExecutor-1
Thread 2 exit
Run Code Online (Sandbox Code Playgroud)
两个异步调用的线程名称相同,但似乎不呈现异步行为.
这些情况@Async对我不起作用
@EnableAsync 失踪@Async 方法不公开@Async注释方法是从同一个类的另一个方法调用的.可能绕过异步代理代码并只调用普通方法.| 归档时间: |
|
| 查看次数: |
3626 次 |
| 最近记录: |