码迷,mamicode.com
首页 > 其他好文 > 详细

FutureTask 测试用例

时间:2014-08-22 09:19:15      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   java   io   for   ar   

package currentTest.BlockingQueue;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

/**
 * 测试FutureTask的用法,如果不想分支线程阻塞主线程,又想取得分支线程的执行结果,就用FutureTask
 * 
 * @author zhailzh
 * 
 */
public class FutureTaskTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        CountNum cn = new CountNum(0);
        // FutureTask<Integer> 这里的表示返回的是Integer
        FutureTask<Integer> ft = new FutureTask<Integer>(cn);
        Thread td = new Thread(ft);
        System.out.println("futureTask执行计算:" + System.currentTimeMillis());
        td.start();
        System.out.println("main 主线程可以做些其他事情" + System.currentTimeMillis());
        try {
            // futureTask的get方法会阻塞,知道可以取得结果为止
            Integer result = ft.get();
            System.out.println("计算的结果是:" + result);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
        System.out.println("取得分支线程执行的结果后,主线程可以继续处理其他事项");
    }

}

class CountNum implements Callable {
    private Integer sum;

    public CountNum(Integer sum) {
        this.sum = sum;
    }

    public Object call() throws Exception {
        for (int i = 0; i < 100; i++) {
            sum = sum + i;
        }
        // 休眠5秒钟,观察主线程行为,预期的结果是主线程会继续执行,到要取得FutureTask的结果是等待直至完成
        Thread.sleep(3000);
        System.out.println("futureTask 执行完成" + System.currentTimeMillis());
        return sum;
    }

}

 每日一戒:

bubuko.com,布布扣

FutureTask 测试用例,布布扣,bubuko.com

FutureTask 测试用例

标签:style   blog   http   color   java   io   for   ar   

原文地址:http://www.cnblogs.com/zhailzh/p/3928543.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!