Java5后,提供了大量处理多线程的接口,以前只是简单的使用其线程池,最近发现Future模式也有,分享之
只贴出了部分代码:
定义池:
private static final ExecutorService worker = Executors.newFixedThreadPool(N);// 线程池
private static List<Future<?>> futureList = new ArrayList<Future<?>>();// 工作中的线程
使用线程池:
futureList.add(worker.submit(this));
结束线程:
// 结束线程池中的线程执行(中断)
public static void cancel() {
for (Future<?> f : futureList) {
f.cancel(true);
}
}
注:Future为线程的执行结果票据,当使用Callable方式执行时可以得到线程的执行结果f.get(),同时也可以控制某线程的结束和执行状态。
当使用Runnable方式执行时,得到结果是空,但也可以对线程进行控制。
补充:
应该是调用了线程的中断方法Thread.currentThread().interrupt();但并不像stop方法那样立即结束掉子线程,而是改变了中断的信号量Thread.interrupted(),在阻塞的线程会抛出InterruptedException异常,但是在非阻塞的条件下子线程会继续执行,需要在循环中自己判断信号量来抛出异常。
分享到:
相关推荐
在Java编程中,多线程读取多个文件是一项常见需求,尤其在文件数量较多或者文件较大时,能够提升处理效率。本文将详细介绍如何在Java中使用多线程来同时读取多个文件。 首先,本文涉及到的核心类是`Thread`类,这是...
最后,工具在Java多线程开发中也起着重要作用,例如JVisualVM、JConsole等Java自带的监控工具,可以帮助开发者分析线程状态、检测死锁、查看内存使用情况等,从而更好地理解和优化多线程程序。 总之,Java多线程...
此外,ExecutorService和Future接口提供了线程池和异步计算的能力,增强了多线程的管理和效率。Java还内置了synchronized关键字、Lock接口(如ReentrantLock)来实现线程同步,防止数据竞争。 在实际开发中,理解多...
- **调试技巧**:多线程调试比较复杂,可以使用JDK自带的调试工具,如JVisualVM等,来帮助分析线程的状态和行为。 通过以上内容的学习,读者可以深入了解Java线程的高级使用方法,掌握如何在Java程序中高效地管理和...
下面将从多线程编程的基础知识、线程池的使用、异常捕获三个方面进行阐述。 一、多线程编程基础知识 在 Java 中,存在两种线程模型:主线程和子线程。主线程是程序的入口点,而子线程是由主线程创建的辅助线程。...
Java内置了对多线程的支持,通过`Thread`类和`Runnable`接口实现。`synchronized`关键字用于控制并发访问,`wait()`、`notify()`和`notifyAll()`方法用于线程间通信。 四、反射机制 Java反射机制允许在运行时动态...
多线程和JVM是Java编程中非常重要的概念,特别是对于进行面试准备的开发者来说,掌握这些知识至关重要。本篇内容将对多线程和JVM的相关知识点进行详细阐述,帮助开发者在面试中更有信心。 首先,多线程是Java中实现...
4. **ExecutorService**:Java的并发工具,可以创建固定数量的线程池,实现多线程并行下载。配合Future和Callable接口,可以获取每个线程的返回值,方便管理和控制下载进度。 5. **DownloadManager**:Android系统...
在Java编程语言中,线程是...通过学习线程的创建、同步、线程安全策略以及相关工具的使用,开发者能够更好地应对多线程编程的挑战。同时,深入研究源码有助于更深刻地理解其工作原理,从而在实际开发中做出更优的决策。
在Android平台上,开发一款具有多线程断点续传下载功能和在线播放音乐的应用是一项挑战性的任务,涉及到多个核心技术和组件。以下是对这个项目源码的详细解析: 首先,我们来了解一下多线程断点续传下载。在Android...
- **多线程基础**:Java通过`Thread`类支持多线程编程,创建新线程可以通过继承`Thread`类或者实现`Runnable`接口来完成。 - **线程生命周期**:线程有几种状态包括新建、就绪、运行、阻塞和死亡等,了解这些状态有...
Java平台提供了强大的并发工具和框架,使得开发者能够有效地利用多线程和分布式计算,提高系统的性能和响应速度。 本书主要涵盖以下几个关键知识点: 1. **线程基础**:首先,你需要了解线程的基本概念,包括如何...
这个压缩包"安卓文件下载上传解压相关-下载网络图片(整合多线程内存缓存本地文件缓存~.zip"似乎包含了一个用于下载网络图片的示例,特别强调了多线程、内存缓存和本地文件缓存的整合。下面我们将详细讨论这些关键...
5. **多线程**:Java 6.0的线程管理更加成熟,新增了`ThreadLocal`类,提供线程局部变量,减少了数据同步的复杂性。`ExecutorService`和`Future`接口提供了更高级的线程池管理。 6. **国际化**:`java.text`和`java...
5. **线程与并发**:为了提高爬取效率,通常会使用多线程或者异步处理。Java提供了线程池 (`java.util.concurrent`) 和Future接口来支持并发。 6. **数据存储**:抓取到的数据可能需要保存到文件、数据库或者进行...
6. **多线程编程**:Java 1.8在并发编程方面有强大的支持,`java.util.concurrent`包提供了各种并发工具类,如ExecutorService、Semaphore、Future等,理解并善用这些工具能编写出高效稳定的并发程序。 7. **模块...
1. 多线程与并发:Java提供了丰富的并发工具类和接口,如ExecutorService、Future、Callable、ThreadLocal等,以及synchronized、volatile关键字,理解它们的工作原理和用法,能有效处理多线程环境下的同步和异步...
Java提供的Thread类和Runnable接口是实现多线程的基础。 2. **并发控制**:Java提供了多种并发控制机制,如synchronized关键字、volatile变量、Lock接口(包括ReentrantLock)以及Condition接口。它们用于确保数据...
5. **多线程编程**:深入学习并发编程,包括线程的创建、同步机制(synchronized、Lock)、并发容器(ConcurrentHashMap、BlockingQueue等)以及Future和ExecutorService的使用。 6. **异常处理**:理解Java异常的...