篇十一:Java异步处理

学习地址:http://www.cnblogs.com/jevo/archive/2013/04/11/3015023.html

一、java异步处理demo

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;

public class MyFutureTask {
    
    public static void main(String[] args) {
        ExecutorService executor = Executors.newCachedThreadPool();
        FutureTask<String> future = new FutureTask<>(new Callable<String>() {
            public  String call() throws Exception{
                try {
                    for(int i=1;i<100;i++){
                        System.out.println("线程:"+i);
                    }
                    return "ok";
                } catch (Exception e) {
                    throw new Exception("Callable terminated with Exection!");
                }
                
            }
        });
        FutureTask<String> future1 = new FutureTask<>(new Callable<String>() {
            public  String call() throws Exception{
                try {
                    for(int i=1;i<100;i++){
                        System.out.println("线程1:"+i);
                    }
                    return "ok";
                } catch (Exception e) {
                    throw new Exception("Callable terminated with Exection!");
                }
                
            }
        });
        FutureTask<String> future2 = new FutureTask<>(new Callable<String>() {
            public  String call() throws Exception{
                try {
                    for(int i=1;i<100;i++){
                        System.out.println("线程2:"+i);
                    }
                    return "ok";
                } catch (Exception e) {
                    throw new Exception("Callable terminated with Exection!");
                }
                
            }
        });
        executor.execute(future);
        executor.execute(future1);
        executor.execute(future2);
        for(int i=1;i<100;i++){
            System.out.println("正常秩序:"+i);
        }
        try {
            future.get();
            future1.get();
            System.out.println(future.isDone());
            System.out.println(future1.isDone());
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        }finally{
            executor.shutdown();
        }
    }
}

 

二、web请求异步处理

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("test")
public class TestController {
    
    @RequestMapping("test.do")
    public @ResponseBody String test(){
        System.out.println("测试开始");
        ExecutorService executor = Executors.newCachedThreadPool();
        FutureTask<String> future = new FutureTask<>(new Callable<String>() {
            public String call(){
                System.out.println("Test Start");
                try {
                    Thread.sleep(10000);
                    for(int i=1;i<100;i++){
                        System.out.println("线程:"+i);
                    }
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("Test End");
                return "Test OK!";
            }
        });
        executor.execute(future);
        return "OK Nasme";
        
    }
}

 

posted @ 2017-04-26 16:26  刘广平  阅读(253)  评论(0)    收藏  举报