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).
  • 相关阅读:
    day04作业
    一个简单的gridlayout栗子
    用户名、密码等15个常用的js正则表达式
    html 颜色
    心态好的人,一辈子都好
    怎么样好好的聊天呢
    一篇引用文章
    再见,发微信不回的人
    第一个不怎么正经的网页
    关于学科目标
  • 原文地址:https://www.cnblogs.com/a-bird/p/3609042.html
Copyright © 2011-2022 走看看