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 = ...{ ...{ 87, 86, 90, 91, 76 }, ...{ 56, 34, 66, 78, 65 },
...{ 99, 97, 95, 87, 89 }, ...{ 77, 76, 75, 78, 85 },
...{ 88, 56, 78, 78, 76 } };
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. SpringBoot 自定义线程池以及多线程间的异步调用(@Async、@EnableAsync) 2.Java多线程之定时任务 以及 SpringBoot多线程实现定时任务 3.@EnableScheduling 与 @Scheduled
Java多线程是Java编程中的一个重要领域,它允许程序同时执行多个任务,从而提高系统效率和资源利用率。在这个未完成的案例中,我们可能正在探讨如何在Java中创建和管理线程,以及处理多线程环境下的并发问题。下面是...
这个名为"Java多线程的小例子——吃包子"的示例,旨在帮助开发者直观地理解多线程的工作原理。下面我们将深入探讨该示例所涉及的核心知识点。 首先,多线程通常涉及到以下几个关键概念: 1. **线程(Thread)**:...
在Java编程中,多线程是一项关键技能,尤其在处理并发任务时,如我们的示例——"Java多线程下载网络图片"。这个场景展示了如何利用多线程技术提高程序性能,减少用户等待时间,同时优化系统资源的使用。下面我们将...
本文将深入探讨一个轻量级的Java多线程池实现,这个实现允许线程间的通信,并提供了类似Akka Actor的调度功能。 首先,我们要理解Java中的线程池。线程池是一种线程使用模式,它维护一组可以重复使用的线程,避免了...
【Java练手小项目——多线程...通过这个“Java练手小项目——多线程聊天室”,你可以深入了解Java多线程的原理和实践,同时学习到网络编程和并发集合的运用,这对于提升你的Java编程技能和解决实际问题的能力大有裨益。
Java多线程扫描器的开发旨在深化对Java面向对象程序设计的理解,特别是巩固Java语言的语法规范。此项目的核心目标在于分析系统的可行性,明确开发方向,确保开发过程的合理性。它要求开发者能够精确识别系统流程,...
通过这个项目,学习者可以掌握Java多线程编程的基本概念和实际应用,了解线程池的使用,以及如何在并发环境中处理文件I/O。此外,还将锻炼到问题解决能力,如处理网络不稳定、断点续传等常见问题。对于Java程序员来...
Java多线程处理数据是一种常见的优化策略,尤其在面临大量数据查询时,通过并发执行任务可以显著提升程序的运行效率。以下将详细解释这个程序中的关键知识点: 1. **Callable接口**:`ThredQuery`类实现了`Callable...
### Java多线程的使用与介绍 #### 什么是多线程? 多线程是指程序能够同时执行多个线程的能力。每个线程都是一个轻量级的进程,可以在单个程序中独立运行,共享该程序的资源。在Java中,多线程是通过`java.lang....
7. **多线程**:JAVA提供了丰富的多线程支持,学习笔记会讲解线程的创建、同步、互斥以及线程池的使用。 8. **反射机制**:JAVA反射机制允许在运行时动态地获取类的信息并操作类的对象,这对于插件开发、动态代理等...
在Android开发中,多线程是必不可少的一部分,特别是在执行耗时操作如网络请求、数据库操作等时,为了不阻塞主线程,我们会采用异步处理。`Future`、`FutureTask`、`Callable`和`Runnable`是Java并发编程中的核心...
2. **Java中的多线程** 在Java中,我们可以通过两种主要的方式来创建线程:继承`Thread`类或实现`Runnable`接口。继承`Thread`类可以直接创建一个新的类,并重写`run()`方法,而实现`Runnable`接口则需要将`run()`...
内容概要:本文详细介绍了Java多线程的基本概念、实现方式、线程控制方法、线程同步、线程池及其应用。首先解释了线程的概念及其优势,接着讲述了如何通过继承Thread类、实现Runnable接口和使用Callable接口来创建多...
一、Java多线程编程 多线程是Java的一个强大特性,它允许一个应用程序同时执行多个任务。在Java中,每个线程代表程序中的一个独立的执行流。通过创建和管理多个线程,开发者可以提高程序的并发性,使得程序在等待I/...
- Java多线程编程涉及多个方面的知识和技术,从基本的线程创建到高级的同步机制,都是开发高效、可靠的多线程应用程序所必需的。 - 正确理解和使用这些技术对于提高程序性能、避免死锁等问题至关重要。
### Java多线程编程知识点详解 #### 一、线程基础概述 - **定义与特点:** - **线程**是一种比进程更细粒度的执行单元,它允许在一个进程中并发执行多个任务。 - **轻量级进程**:线程有时被称为轻量级进程,...
在深入探讨Java多线程之前,我们先来了解一些基本的概念——进程与线程。 - **进程**:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位。每个进程拥有独立的地址空间和其他资源。进程之间相互独立,...
在Java编程领域,多线程是面试中常见且重要的知识点,尤其对于系统设计和高并发处理的岗位至关重要。本文将围绕“多线程面试题”这一主题,深入探讨相关概念、技术及其应用。 1. **线程的概念**:线程是程序执行的...
总之,Java多线程编程技术对于高效利用现代多核处理器的计算能力、开发高性能应用程序至关重要。掌握这门技术,不仅可以编写出更高效的代码,还可以在设计系统架构时做出更加合理的决策。然而,随着并发级别的提高,...