1. 创建线程池
ExecutorService executorService = Executors.newCachedThreadPool();
2. 执行一次线程,调用Runnable接口实现
Future<?> future = executorService.submit(new DefaultRunnable()); System.out.println(future.get());
当线程池执行Runnable后,返回的Future.get()总是null
DefaultRunnable代码如下:
package threadpool; public class DefaultRunnable implements Runnable { private int count = 1; @Override public void run() { System.out.println("the count in default runnable is ["+count+++"]"); } }
3. 执行一次线程,调用Callable接口实现
Future<?> future = executorService.submit(new DefaultCallable()); System.out.println(future.get());
当线程池执行Callable时,返回的Future.get() 会返回Callable的返回值
DefaultCallable代码如下:
package threadpool; import java.util.concurrent.Callable; public class DefaultCallable implements Callable<Object> { private int count =1; @Override public Object call() throws Exception { return count++; } }
4. 关闭线程池
executorService.shutdown();
相关推荐
2 如何使用FutureTask 、Future、Callable、线程池实现线程2.1 FutureTask + Callable实现多线程2.2 线程池+Future+Callable 实现多线程3 Runnable、Callable、Future和FutureTask之间的关系3.1 整体关系介绍3.2 ...
本文将深入探讨如何在Java中使用线程池来查询大量数据,以及这样做的好处和实现方法。 首先,理解线程池的概念至关重要。线程池是一种多线程处理形式,预先创建了若干个线程,当有任务需要执行时,会从线程池中取出...
Java线程池是Java并发编程中的重要组成部分,它在多线程和高并发场景下扮演着关键角色。本文将深入探讨Java线程池的源码分析,并对比不同类型的线程池,以帮助开发者更好地理解和利用这一强大的工具。 首先,我们要...
"详细分析JAVA线程池" Java线程池是Java编程语言中的一种机制,用于管理和重用线程,以提高程序的性能和效率。下面是Java线程池的相关知识点: 1. 什么是线程池? 线程池是指在程序启动时创建的一组空闲线程,程序...
Java线程池是一种高效管理线程资源的工具,它通过维护一组可重用的线程来减少创建和销毁线程的开销。在Java中,`java.util.concurrent`包提供了`ExecutorService`接口和它的实现类,如`ThreadPoolExecutor`,来支持...
使用`Future`接口可以获取线程执行的结果,`Callable`接口则允许线程返回一个结果,它们与线程池结合使用可以实现异步计算。 8. **线程池的扩展** Java并发包中还有一些其他的Executor实现,如...
- 使用`submit(Runnable/Callable)`提交有返回值的任务,这将返回一个`Future`对象,通过它可以获取结果或管理任务状态。 例如,对于`ExecutorService es`,执行`submit()`方法时,内部会将`Runnable`或`Callable`...
这篇教程将深入探讨如何在Java中使用Callable。 Callable接口位于`java.util.concurrent`包下,它的主要方法是`call()`,这个方法相当于Runnable的`run()`,但`call()`可以有返回值和抛出异常。当我们需要在线程中...
Java线程池是Java并发编程中的重要组成部分,它在Java 5及后续版本中引入,大大简化了线程管理和资源调度。线程池通过`Executor`接口和`ExecutorService`接口提供了一套强大的机制,允许开发者高效地创建、管理和...
Java通过Callable和Future来接收线程池的执行结果 Java中的线程池执行结果获取一直是一个棘手的问题,对于直接继承Thread的方式或实现Runnable接口的方式,都无法获取到线程执行的返回结果。如果线程在执行过程中...
`Future`、`FutureTask`、`Callable`和`Runnable`是Java并发编程中的核心接口和类,它们在Android开发中同样有着广泛的应用。下面将详细介绍这些概念以及它们如何协同工作。 1. `Runnable`: 这是Java中最基础的多...
Java线程池是Java并发编程中的重要组成部分,它在多线程编程中扮演着至关重要的角色,有效地管理和调度线程资源,提高了程序的性能和稳定性。本资源包含了一个经典的Java线程池实现,适用于大型项目,能帮助开发者...
Java线程池是一种高效管理线程的工具,它允许开发者预先定义好一组线程,然后根据需要分配任务,而不是每次需要执行任务时都创建新的线程。这种设计模式可以显著提高系统的性能,减少线程创建和销毁的开销,同时通过...
`Callable`和`Future`的组合是Java并发包中一个强大的工具,它弥补了`Runnable`接口的不足,使得异步编程可以获取到返回值并处理异常。同时,`ExecutorService`作为线程池的实现,为并发编程提供了一种优雅的解决...
在深入理解高并发编程,尤其是Java线程池核心技术时,我们首先要明白线程与多线程的概念。线程是操作系统中的基本调度单元,它比进程更小,且基本不拥有系统资源,主要由程序计数器、寄存器和栈等组成。在同一个进程...
Java concurrency线程池之Callable和Future Java concurrency是一个重要的概念,在Java编程中,线程池是一个关键组件。今天,我们将详细介绍Java concurrency线程池之Callable和Future,这两个组件在Java并发编程中...
Java线程池是一种高效管理并发任务的工具,它通过复用线程来减少创建和销毁线程的开销,从而提高系统性能。线程池的核心组成部分包括工作队列(Work Queue)、工作线程(Worker Threads)和任务调度器(Executor)。...
线程池通常使用`execute()`方法来提交`Runnable`任务,或者使用`submit()`方法来提交`Callable`任务,后者会返回一个`Future`对象,可以用来获取任务执行的结果或检查任务状态。 线程池的工作流程大致如下: 1. **...
Java线程池是一种高效管理线程资源的工具,它通过预先创建一定数量的线程来减少创建和销毁线程的开销,提高了系统的响应速度和并发处理能力。线程池的核心类是`java.util.concurrent.ThreadPoolExecutor`,它提供了...
2、 线程池使用一个线程,执行这个FutureTask任务,线程执行任务过程比较简单,最终会调用Callable.call()或者是Runnable.run()方法,然后得到一个结果,把结果存储在FutureTask实例的outcome属性中,同时把状态修改...