java 调用异步方法

某些时候我们需要执行一个方法立即返回一个处理结果,但仍需要另一个方法去实现某些功能(如调用存储过程)实现异步处理。下面我们采用新开一个线程的方式处理:
          
        /**
	 * 手动执行
	 */
	public void doJob() {
		Map<String, Object> jsonBean = new LinkedHashMap<String, Object>();
		if (!UtilTools.isEmpty(token)&& token.equals("4297f44b13955235245b2497399d7a93")) {
                       //开启新的线程
                       try {
				ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
				cachedThreadPool.execute(new Runnable() {
					 
				    public void run() {
				    	
						// do task
						todoUsp();
				    }
				});
				cachedThreadPool.shutdown();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			jsonBean.put("success", "true");
		} else {
			jsonBean.put("success", "false");
		}


		this.renderJson(UtilTools.encodeObject2Json(jsonBean));
	}
        
        /*需要完成功能的方法*/
        public void toDoUsp(){

            //调用存储过程
            ...
        }


第二种方式采用Ajax异步方法请求,前台页面处理,执行后等待第一个结果返回再继续调用第二个方法。


你可能感兴趣的:(java)