zoukankan      html  css  js  c++  java
  • JDK中的Future模式

    RealDataJDK类:

    public class RealDataJDK implements Callable<String> {
    	protected String data;
    
    	public RealDataJDK(String data) {
    		this.data = data;
    	}
    
    	@Override
    	public String call() throws Exception {
    		//利用sleep方法来表示真是业务是非常缓慢的
    		try {
    			System.out.println("kaishi 耗时处理");
    			Thread.sleep(1000);
    			System.out.println("kaishi 耗时处理完成");
    		} catch (InterruptedException e) {
    			e.printStackTrace();
    		}
    		return data;
    	}
    }
    

    Application

    public class Application {
    	public static void main(String[] args) throws Exception {
    		FutureTask<String> futureTask = 
    				new FutureTask<String>(new RealDataJDK("name"));
    		ExecutorService executor = 
    				Executors.newFixedThreadPool(1); //使用线程池
    		//执行FutureTask,相当于上例中的client.request("name")发送请求
    		executor.submit(futureTask);
    		//这里可以用一个sleep代替对其他业务逻辑的处理
    		//在处理这些业务逻辑过程中,RealData也正在创建,从而充分了利用等待时间
    		System.out.println("处理自己的事情");
    		Thread.sleep(500);
    		System.out.println("处理自己的事情完成");
    		//使用真实数据
    		//如果call()没有执行完成依然会等待
    		System.out.println("数据=" + futureTask.get());
    		executor.shutdown();
    	}
    }
    

      

  • 相关阅读:
    dubbo服务provider方打印警告日志,getDeserializer
    [学习]sentinel中的DatatSource(一) ReadableDataSource
    ppt字体
    dubbo异常filter
    术语
    [转]五步git操作搞定Github中fork的项目与原作者同步
    markdown学习资料
    springboot properties
    aop备忘
    git技巧
  • 原文地址:https://www.cnblogs.com/sg9527/p/8125299.html
Copyright © 2011-2022 走看看