您的位置:首页 > 编程语言 > Java开发

Java Thread学习之四

2013-08-10 15:32 204 查看
package com.yiing.study.thread;

import java.util.ArrayList;

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;

/**

 * Runnable是执行工作的独立任务,但是不返回任何值。

 * 如果希望返回一个值,可以实现Callable接口 ,类型参数表示的是从方法call()中返回的值

 * @author Administrator

 *

 */

class TaskWithResult implements Callable<String>{

 private int id;

 

 public TaskWithResult(int id){

  this.id = id;

 }

 

 @Override

 public String call() throws Exception {

  return "results of TaskWithResult " + id;

 }

 

}

public class CallableDemo {

 public static void main(String[] args) throws ExecutionException{

  ExecutorService exec = Executors.newCachedThreadPool();

  ArrayList<Future<String>> results = new ArrayList<Future<String>>();

  for(int i = 0; i<10; i++){

   results.add(exec.submit(new TaskWithResult(i)));

  }

  for(Future<String> fs : results){

   try{

   System.out.println(fs.get());

   }catch (InterruptedException e){

    e.printStackTrace();

   }

  }

  exec.shutdown();

 }

}

/**

 *运行结果

results of TaskWithResult 0

results of TaskWithResult 1

results of TaskWithResult 2

results of TaskWithResult 3

results of TaskWithResult 4

results of TaskWithResult 5

results of TaskWithResult 6

results of TaskWithResult 7

results of TaskWithResult 8

results of TaskWithResult 9

 */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  线程