`
softstone
  • 浏览: 461932 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Java多线程开发九——线程池2

阅读更多

JDK1.5还提供了Callable<T>和Future<T>接口,用于线程池执行任务并获取返回值。下面给出一个简单的示例代码。

1. 实现一个任务

 

public class Caller implements Callable<Float> ...{
    
private float[] score;

    
public Caller(float[] score)...{
        
this.score = score;
    }

    
/** *//**
     * 计算平均分
     
*/

    
public Float call() throws Exception ...{
        
float sum = 0;
        
for (int i=0;i<score.length;i++)...{
            sum
+=score[i];
        }

        
return sum/score.length;
    }

}

 2.使用线程池执行任务并获取返回值

 

public class ThreadPoolSample ...{

    
float[][] scores = ......8786909176 }...5634667865 },
            
...9997958789 }...7776757885 },
            
...8856787876 } }
;

    Future
<Float>[] result = new Future[5];

    
public void count() throws InterruptedException, ExecutionException ...{
        
//创建线程池
        ExecutorService pool = Executors.newFixedThreadPool(5);
        
for (int i = 0; i < scores.length; i++...{
            
//提交任务,获取结果
            result[i] = pool.submit(new Caller(scores[i]));
        }

        
for (int i = 0; i < result.length; i++...{
            System.out.println(result[i].get());
        }

        
//关闭线程池
        pool.shutdown();
    }


    
public static void main(String[] args) ...{
        ThreadPoolSample sample 
= new ThreadPoolSample();
        
try ...{
            sample.count();
        }
 catch (InterruptedException e) ...{

            e.printStackTrace();
        }
 catch (ExecutionException e) ...{

            e.printStackTrace();
        }

    }


}

 

附:自己实现一个线程池

Tomcat的源代码中实现了一个线程池,有兴趣可以看一下。在connectors的util下面。具体目录:org\apache\tomcat\util\threads

分享到:
评论
1 楼 playboylee 2008-05-05  
看不出和正常程序有什么分别

相关推荐

    Java多线程之定时任务 以及 SpringBoot多线程实现定时任务——异步任务

    1. SpringBoot 自定义线程池以及多线程间的异步调用(@Async、@EnableAsync) 2.Java多线程之定时任务 以及 SpringBoot多线程实现定时任务 3.@EnableScheduling 与 @Scheduled

    Java进阶学习——Java多线程知识的理解

    Java多线程知识的理解0.前言1.从一道题目引入2.创建线程2.1.继承Thread类2.2.实现Runnable接口3.线程的生命周期4.线程安全4.1.为什么需要线程安全?4.2.如何实现线程安全?5.线程池5.1.为什么需要线程池?5.2.创建...

    java高手真经 光盘源码

    javathread.zip 10.Java多线程编程(线程池、生产者消费者、存取款实例) javautil.zip 11.Java常用实体类 javaxml.zip 14.XML属性文件 第4部分(6个程序包) javagui.zip 15.Java GUI库对比实例 javaawt.zip ...

    Java高手真经(编程基础卷)光盘全部源码 免积分

    javathread.zip 10.Java多线程编程(线程池、生产者消费者、存取款实例) javautil.zip 11.Java常用实体类 javaxml.zip 14.XML属性文件 第4部分(6个程序包) javagui.zip 15.Java GUI库对比实例 javaawt.zip ...

    多线程文章目录

    Java多线程①——线程知识梳理 有助于新手初步了解线程相关的知识同时加深对基础的理解。 了解线程的状态、常用方法以及Thread、Runnable、Callable、Future、FutureTask这些基础概念和简单应用。 Java多线程②——...

    Java高手真经(编程基础卷)光盘全部源码

    javathread.zip 10.Java多线程编程(线程池、生产者消费者、存取款实例) javautil.zip 11.Java常用实体类 javaxml.zip 14.XML属性文件 第4部分(6个程序包) javagui.zip 15.Java GUI库对比实例 javaawt.zip 16....

    Java线程池管理及分布式Hadoop调度框架搭建

    这里我们为大家分享上海创行科技技术总监严澜的博文——Java线程池管理及分布式Hadoop调度框架搭建。平时的开发中线程是个少不了的东西,比如tomcat里的servlet就是线程,没有线程我们如何提供多用户访问呢?不过很...

    Java-learning:JAVA学习,包括:面试,多线程,JVM虚拟机,spring源码,mybatis源码等知识点-源码包

    并发-多线程相关 jvm JVM——虚拟机相关 来源-源码相关 Redis——Redis相关 卡夫卡-卡夫卡相关 Elasticsearch——ES相关 HBase——HBase相关 SpringBoot——Spring Boot相关 1多线程 1.1如何设置线程池线程数? 任务...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    │ │ 9.JAVA并发编程之多线程并发同步业务场景与解决方案.wmv │ │ │ ├─10.微服务架构之Spring Cloud Eureka 场景分析与实战 │ │ 10.微服务架构之Spring Cloud Eureka 场景分析与实战.wmv │ │ │ ├─11....

    Java JDK实例宝典

    全部代码出自电子工业出版社夏先波的《Java JDK实例宝典》一书,本书以J2SE 5.0为开发环境,选取Java应用的典型实例,循序渐进地介绍了Java语言的各种开发方法和技巧,实例代码注释详细规范,思路清晰。 第1章 ...

    java多线程笔试题-hammer:二进制格式的解析器组合器,在C中。是的,在C中。什么?不要那样看着我

    java多线程笔试题Hammer 是一个解析库。 像许多现代解析库一样,它提供了一个解析器组合器接口,用于将语法编写为内联域特定语言,但 Hammer 也提供了各种解析后端。 它也是面向位而不是面向字符的,因此非常适合...

    Java SE实践教程 pdf格式电子书 下载(四) 更新

    第3章 当一个变成多个——集合框架的基本概念 53 .3.1 讲解 54 3.1.1 集合概述 54 3.1.2 Collection接口 54 3.1.3 泛型(Generics) 56 3.1.4 Map接口 57 3.2 练习 59 3.2.1 创建课程管理系统 59 3.3 小结 ...

    这就是标题—— JUC.pdf

    多线程锁 并发下的集合类 List Set Map Callable接口 线程创建的方式 callable / runnable FutureTask JUC常用辅助类 CountDownLatch (减少计数器) CyclicBarrier(加法计数器) Semaphore(信号量,流量控制) ...

    Java SE实践教程 源代码 下载

    第3章 当一个变成多个——集合框架的基本概念 53 .3.1 讲解 54 3.1.1 集合概述 54 3.1.2 Collection接口 54 3.1.3 泛型(Generics) 56 3.1.4 Map接口 57 3.2 练习 59 3.2.1 创建课程管理系统 59 3.3 小结 ...

    Java SE实践教程 pdf格式电子书 下载(一) 更新

    第3章 当一个变成多个——集合框架的基本概念 53 .3.1 讲解 54 3.1.1 集合概述 54 3.1.2 Collection接口 54 3.1.3 泛型(Generics) 56 3.1.4 Map接口 57 3.2 练习 59 3.2.1 创建课程管理系统 59 3.3 小结 ...

    Java网络编程(第三版)中文版.part09.rar

    ——Bruce Eckel,《Thinking in Java》的作者 内容简介回到顶部↑《Java网络编程》第三版会为你介绍Java网络API的最新特性。本书讨论了JDK 1.4和1.5(现在已命名为J2SE 5)中所做的所有修改和增补。本书内容全面,...

    Java网络编程(第三版)中文版.part11.rar

    ——Bruce Eckel,《Thinking in Java》的作者 内容简介回到顶部↑《Java网络编程》第三版会为你介绍Java网络API的最新特性。本书讨论了JDK 1.4和1.5(现在已命名为J2SE 5)中所做的所有修改和增补。本书内容全面,...

Global site tag (gtag.js) - Google Analytics