zoukankan      html  css  js  c++  java
  • java并发--Callable的使用

    在java并发中提供了Callable<T>的一个接口,可以在线程中返回一个参数,这是接口Runable所做不到的。。

    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.concurrent.Callable;
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Future;
    
    public class CallableTest {
    	/**
    	 * 可以返回一个参数
    	 * @author Administrator
    	 *
    	 */
    	class TaskCallable implements Callable<String> {
    		int id;
    
    		TaskCallable(int id) {
    			this.id = id;
    		}
    		/**
    		 * 线程中可以返回一个参数
    		 */
    		@Override
    		public String call() throws Exception {
    			return "xxxx" + id;
    		}
    
    	}
    
    	public static void main(String[] args) {
    		CallableTest test = new CallableTest();
    		ArrayList<Future<String>> arrFuture = new ArrayList<Future<String>>();//利用future储存
    		ExecutorService executorServer = Executors.newCachedThreadPool();
    		try {
    			for (int i = 0; i < 10; i++) {
    				Future<String> future = executorServer
    						.submit(test.new TaskCallable(i));//submit产生futrue对象
    				arrFuture.add(future);
    
    			}
    			for (Future<String> future : arrFuture) {
    				System.out.println(future.get());
    			}
    		} catch (InterruptedException e) {
    			System.out.print(e);
    		} catch (ExecutionException e) {
    			System.out.print(e);
    		} finally {
    			executorServer.shutdown();
    		}
    
    	}
    }
    

     call函数返回一个参数,跟Runable所不同的是Runable是调用excute(Thread),Callable是调用

    submit(Thread).
  • 相关阅读:
    CUDA从入门到精通
    [Network] 计算机网络基础知识总结
    第三章 需求工程概论
    jsp学习
    算法——递推算法
    大话设计模式读书笔记--文章汇总
    轻松学SQL Server数据库
    Oracle数据库建表+添加数据练习
    《C#图解教程》 总览
    php发送get、post请求的6种方法简明总结
  • 原文地址:https://www.cnblogs.com/a-bird/p/3609042.html
Copyright © 2011-2022 走看看