package test;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
/**
* 此类描述的是:
*
* @author 作者 E-mail: wangxiongdx@163.com
* @version 创建时间:2009-8-12 上午11:46:32
*/
public class CallableExample {
public static class WordLengthCallable implements Callable<Integer> {
private String word;
public WordLengthCallable(String word) {
this.word = word;
}
public Integer call() {
return Integer.valueOf(word.length());
}
}
public static void main(String args[]) throws Exception {
ExecutorService pool = Executors.newFixedThreadPool(3);
Set<Future<Integer>> set = new HashSet<Future<Integer>>();
for (String word : args) {
Callable<Integer> callable = new WordLengthCallable(word);
Future<Integer> future = pool.submit(callable);
set.add(future);
}
int sum = 0;
for (Future<Integer> future : set) {
sum += future.get();
}
System.out.println("--->"+args[0]);
System.out.printf("The sum of lengths is %s%n", sum);
System.exit(sum);
}
}
分享到:
相关推荐
Java的ExecutorService和ThreadPoolExecutor提供了线程池的概念,它可以有效地管理和控制线程,避免大量创建和销毁线程带来的开销。通过ThreadPoolExecutor,我们可以定制线程池的大小、存活时间、任务队列等参数,...
在这个“Delphi多线程Demo”中,我们将探讨如何在Delphi中创建和管理线程,以及如何实现在线程中定时刷新任务,以保持用户界面的响应性。 首先,我们需要理解多线程的基本概念。在单线程程序中,所有任务都在同一个...
3. NSThread:这是一种轻量级的线程实现,允许开发者直接创建和管理线程。然而,由于其直接操作线程,管理起来相对复杂,且可能导致内存管理问题。在Demo中,可能展示了如何创建和启动NSThread,以及如何在子线程中...
本示例"简单的Java线程demo"旨在帮助初学者理解如何在Java中创建和管理线程。 在Java中,有两种主要的方式来创建线程:继承Thread类和实现Runnable接口。下面我们将详细讨论这两个方法。 1. 继承Thread类: 当一个...
本压缩包“C#多线程Demo”提供了四个具体的WinForm多线程示例,旨在帮助开发者深入理解和掌握线程的使用。下面将详细介绍这些知识点。 1. **线程的创建与启动** 在C#中,我们可以通过`System.Threading`命名空间中...
线程池可以有效地管理线程生命周期,避免频繁创建销毁线程带来的开销。 6. **Callable与Future** - **Callable**:与Runnable类似,但可以返回结果并能抛出异常。 - **Future**:表示Callable任务的未来结果,...
1. `std::thread`: 这是C++11中用于创建和管理线程的类。你可以通过传递一个函数对象(或指向成员函数的指针,以及其相关的对象)来创建一个新的线程。例如: ```cpp #include void worker_function() { // 线程...
综上所述,"C++多线程demo"可能展示了如何在C++中创建、管理和同步线程,以及如何处理多线程编程中常见的挑战。通过学习这个示例,开发者可以更好地理解和应用C++的多线程特性,以提升其软件的并发性能和响应能力。
本项目"多线程demo/java多线程练习"旨在通过实际操作来深入理解和掌握多线程技术,同时模拟数据库操作,这在现代应用程序开发中至关重要。 1. **线程基础** - **创建线程**:Java提供了两种创建线程的方式,分别是...
本文将深入探讨Android多线程的相关知识点,基于“android多线程demo(很清晰很详细)”的描述,我们将围绕这个示例进行讲解。 1. **线程基础**: - **主线程**:Android应用的UI线程,负责处理用户交互和更新界面。...
通过学习这个"多线程demo程序",你可以掌握如何在实践中创建、管理和控制线程,理解多线程编程的基本概念,以及如何解决可能出现的问题。这个项目中的ThreadProject可能是整个示例代码的主目录,包含了演示这些概念...
本篇文章将通过分析“易语言多线程demo.rar”中的示例,深入探讨易语言中的多线程原理及其应用。 首先,我们需要理解多线程的基本概念。在单线程环境中,程序的执行是顺序进行的,而多线程则允许多个任务同时执行,...
线程池由一组可重用的线程组成,当有新的任务需要执行时,线程池会从已创建的线程中选择一个空闲线程来执行任务,而不是每次都创建新的线程。任务完成后,线程不会立即销毁,而是返回线程池等待下一次任务。这样...
首先,线程池是Java等编程语言中管理线程的一种高效方式。它避免了频繁创建和销毁线程带来的性能开销,通过维护一组可重用线程来处理任务。线程池的核心组件包括工作队列、线程池大小、核心线程数、最大线程数、空闲...
- **ThreadDemo.exe**:这是编译后的可执行文件,可以直接运行体验多线程DEMO的功能。 - **Unit1.pas**:这是Unit1模块的源代码文件,包含了Form的逻辑代码,包括对用户交互的响应和线程的创建与管理。 通过分析...
"untiy 多线程demo"是一个展示如何在Unity中实现多线程的实例,它包括了封装的协程(Coroutine)和名为Loom.cs的文件,同时提到了AssetStore上的Loom V1.6插件。 1. **Unity的单线程限制**:Unity引擎默认使用单...
在Linux中,可以使用POSIX线程库(pthread)来创建和管理线程。主要API包括`pthread_create()`用于创建线程,`pthread_join()`等待线程结束,`pthread_mutex_t`和`pthread_cond_t`等用于同步和通信。在多线程编程中...