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
*/
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
*/
相关文章推荐
- 深入学习java并发编程:Thread类的使用
- Java学习提要——浅述'Thread类'和'Runnable接口'的区别
- [置顶] java Thread Join方法学习(同步)
- 学习Java中的多线程编程系列(一):Thread和Runnable
- java并发编程学习之currentThread方法学习
- Java 螺纹第三版 第一章Thread介绍、 第二章Thread创建和管理学习笔记
- Java多线程学习-Thread.state 解释
- 学习笔记4:java中Thread类的方法小结
- java基础知识回顾之java Thread类学习(十二)-- 线程中断
- java学习笔记-Thread
- java学习笔记-Thread
- java Thread学习(新类库CountDownLatch+CyclicBarrier+DelayQueue)
- Java学习札记6:Thread 和 Runnable 的联系和区别(2)
- 【Java多线程学习】Java多线程的两种实现方式:继承Thread类 & 实现Runable接口
- JAVA学习(14) 多线程--Thread类
- Java学习笔记67. 创建多线程的方法 -- 通过继承thread类创建多线程
- java学习——ThreadLocal 线程局部 (thread-local) 变量的使用
- JAVAThread 多线程学习
- 【java学习记录】11.用多线程实现阶乘的计算过程和结果的读取(thread类ReadThread )