概述

Callable介绍见:http://blog.csdn.net/zengmingen/article/details/53288119

多线程介绍见:http://blog.csdn.net/zengmingen/article/details/53284999

代码

TaskCallable.java
package multithreading.pool;import java.util.concurrent.Callable;public class TaskCallable implements Callable<String>{/**线程编号*/private int tNo;public TaskCallable(int tNo){this.tNo=tNo;}@Overridepublic String call() throws Exception {String tName=Thread.currentThread().getName();long currentTimeMillis = System.currentTimeMillis();System.out.println(tNo+"-"+tName+" start time is:"+currentTimeMillis/1000);try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(tNo+"-"+tName+ " is working...");return "the thread is "+tNo;}}

TestPool.java

package multithreading.pool;import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;public class TestPool {public static void main(String[] args) throws Exception, ExecutionException {List<Future<String>> futures = new ArrayList<Future<String>>();ExecutorService newFixedThreadPool = Executors.newFixedThreadPool(2);for (int i = 0; i < 5; i++) {Future<String> future = newFixedThreadPool.submit(new TaskCallable(i));futures.add(future);}// 打印结果for (Future<String> f : futures) {boolean done = f.isDone();// 从结果的打印顺序可以看到,即使未完成,也会阻塞等待System.out.println(done ? "已完成" : "未完成");//从Future中get结果,这个方法是会被阻塞的,一直要等到线程任务返回结果System.out.println("已完成线程返回future结果: " + f.get());}newFixedThreadPool.shutdown();}}

运行结果

0-pool-1-thread-1 start time is:1479808023
未完成
1-pool-1-thread-2 start time is:1479808023
0-pool-1-thread-1 is working...
1-pool-1-thread-2 is working...
已完成线程返回future结果: the thread is 0
已完成
已完成线程返回future结果: the thread is 1
未完成
2-pool-1-thread-1 start time is:1479808024
3-pool-1-thread-2 start time is:1479808024
3-pool-1-thread-2 is working...
2-pool-1-thread-1 is working...
4-pool-1-thread-2 start time is:1479808026
已完成线程返回future结果: the thread is 2
已完成
已完成线程返回future结果: the thread is 3
未完成
4-pool-1-thread-2 is working...
已完成线程返回future结果: the thread is 4

-------------

更多的Java,Angular,Android,大数据,J2EE,Python,数据库,Linux,Java架构师,:

http://www.cnblogs.com/zengmiaogen/p/7083694.html

线程池与Callable更配哦相关推荐

  1. 创建线程(Lock()、线程池、Callable())及线程通信

    package com.xt.java;import java.util.concurrent.locks.ReentrantLock;/*** 解决线程安全问题的方式三:Lock锁 -->JD ...

  2. Java线程池 / Executor / Callable / Future

    为什么需要线程池? 每次都要new一个thread,开销大,性能差:不能统一管理:功能少(没有定时执行.中断等). 使用线程池的好处是,可重用,可管理. Executor 4种线程池 // 可缓存线程 ...

  3. java callable 线程池_JAVA 线程池之Callable返回结果

    本文介绍如何向线程池提交任务,并获得任务的执行结果.然后模拟 线程池中的线程在执行任务的过程中抛出异常时,该如何处理. 一,执行具体任务的线程类 要想 获得 线程的执行结果,需实现Callable接口 ...

  4. 创建线程的四种方式(Thread、Runnable、线程池、Callable)

    目录 一.直接继承Thread类,然后重写run方法 二.实现Runnable接口 三.线程池创建 四.实现Callable接口 创建线程有四种方式:1.继承Thread类   2.实现Runnabl ...

  5. Android中Callable、Future、FutureTask的概念以及几种线程池的使用

    学习线程池必备知识: 在开始介绍线程池之前,先来介绍下Callable和Future的概念,众所周知,Android中实现多线程的方式有两种,实现Runnable接口或者继承一个Thread,但是这两 ...

  6. java同步锁售票_Java基础学习笔记: 多线程,线程池,同步锁(Lock,synchronized )(Thread类,ExecutorService ,Future类)(卖火车票案例)...

    学习多线程之前,我们先要了解几个关于多线程有关的概念. 进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 线程:线程是 ...

  7. Java 并发编程——Executor框架和线程池原理

    Java 并发编程系列文章 Java 并发基础--线程安全性 Java 并发编程--Callable+Future+FutureTask java 并发编程--Thread 源码重新学习 java并发 ...

  8. Java 线程池详解及实例代码

    转载自  Java 线程池详解及实例代码 这篇文章主要介绍了Java 线程池的相关资料,并符实例代码,帮助大家学习参考,需要的朋友可以参考下 线程池的技术背景 在面向对象编程中,创建和销毁对象是很费时 ...

  9. Java线程池,从使用到原理

    转载自  Java线程池,从使用到原理 线程池的技术背景 在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源.在Java中更是如此,虚拟机将试图跟踪每一个对象 ...

最新文章

  1. 【Codeforces】501B Misha and Changing Handles(map)
  2. oracle logminer全解析
  3. Python学习笔记__6.1章 类和实例
  4. 使用异步Servlet改进应用性能
  5. 软件工程期末考试复习(四)
  6. Swift 添加自定义响应事件
  7. raid 物理盘缓存状态_服务器raid卡、磁盘缓存的配置策略
  8. 推动半导体产业发展,华微电子CCT MOS产品发布
  9. 网盘工具比较,以及自己开发的网盘工具[转]
  10. CentOS/Ubuntu制作自动安装arm iso镜像
  11. Atitit 编程语言常用算法attilax总结
  12. linux r语言 安装包下载,R语言安装程序包(示例代码)
  13. scrum敏捷开发项目管理工具必备
  14. 强密码生成器(C++)
  15. 【php】相对路径/绝对路径报错?
  16. TM中拒收自定义表情的设置方法(转)
  17. 中国供应链金融行业全景调研与发展战略研究规划报告2022-2028年版
  18. 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest A Toda2 贪心
  19. 《德鲁克管理思想精要》读书笔记6 - 企业家战略
  20. 【总结】从0到1的项目经历

热门文章

  1. php strlen遇0截断,聊下php下的截断问题
  2. mysql 相关搜索_MySQL单词搜索相关度排名
  3. C/C++课程设计 之职工管理系统
  4. java连加密的mysql_Java 实现加密数据库连接
  5. 可信计算3.0工程初步pdf_查校 | 英国大学工业工程与运筹学专业40个授课硕士+研究Mphil/Phd 项目汇总...
  6. 0 179 90 150matlab,matlab成功的函数拟合方法_更新中
  7. PHP7数字三角形代码,倒数字三角
  8. android 通知历史,Android P新特性:追踪应用通知历史
  9. 网站重新解析换服务器,更换解析服务器地址
  10. mysql migrations_Code First Migrations更新数据库结构(数据迁移)