1,带有排程功能的例子(测试ScheduledExecutorService)。
应用场景:延时5秒后每秒执行一次task1,task1打印一些信息;延时10秒后执行task2, task2用来取消task1的执行。
=============== ScheduledExecutorServiceTest.java start ==================
package Executor;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
public class ScheduledExecutorServiceTest {
@SuppressWarnings("unchecked")
public static void main(String[] args)
throws InterruptedException, ExecutionException {
//1 创建一个具有排程功能的线程池
ScheduledExecutorService service = Executors.newScheduledThreadPool(2);
//2 创建一个任务
Runnable task1 = new Runnable() {
public void run() {
System.out.println("执行一次任务");
}
};
//3 延时5秒后每秒执行一次task1;并返回一个Future 对象(通过Future对象可了解任务执行情况)
final ScheduledFuture future1 = service.scheduleAtFixedRate(task1, 5, 1, TimeUnit.SECONDS);
//4 生成一个可执行任务(该任务执行完毕可以返回结果 或者 抛出异常;而Runnable接口的run方法则不行)
Callable task2 = new Callable() {
public String call() {
future1.cancel(true);
return "任务取消!";
}
};
//5 延时10秒后执行task2;并返回一个Future 对象(通过Future对象可了解任务执行情况)
ScheduledFuture future2 = service.schedule(task2, 10, TimeUnit.SECONDS);
//6 打印task2执行的结果
System.out.println(future2.get());
//7 关闭线程池
service.shutdown();
}
}
=============== ScheduledExecutorServiceTest.java end ==================
输出如下:
执行一次任务
执行一次任务
执行一次任务
执行一次任务
执行一次任务
执行一次任务
任务取消!
分享到:
相关推荐
Java 5引入了`Executor`框架,它提供了一种更加灵活的方式来管理和控制线程池,从而有效地管理线程生命周期。 - **示例代码**: ```java ExecutorService executor = Executors.newFixedThreadPool(10); // 创建...
- **提供任务调度功能**:除了基本的任务执行外,Executor框架还支持任务的定时执行和周期性执行,增强了程序的功能性和灵活性。 #### 2. 原子操作与Java API中的原子类 原子操作是并发编程中的另一个关键概念。一...
Executor框架是Java并发编程的核心组件,它在Java 5中被引入,极大地简化了多线程编程。这个框架是基于`java.util.concurrent`包中的接口和类构建的,旨在提供线程池服务、任务调度以及并发执行任务的能力。Executor...
4. **线程优先级与守护线程**:Java线程有优先级之分,可以影响调度,但实际效果取决于操作系统。守护线程(Daemon Thread)是一种特殊类型的线程,当它是系统中唯一运行的线程时,JVM会自动退出。 5. **并发集合与...
为了简化多线程编程,Java标准库提供了`java.util.concurrent`包,其中包含了一系列高级并发工具,而Executor框架就是其中之一。 ### Executor框架概述 Executor框架提供了一种执行异步任务的方法,它允许开发者将...
Java并发框架中的Executor服务是Java 1.5引入的核心组件,位于`java.util.concurrent`包下,极大地简化了多线程编程。Executor接口虽然历史悠久,但其重要性不言而喻,很多开发者对其背后的原理并不十分了解。本文将...
- Java线程有10个优先级,默认是Thread.NORM_PRIORITY(5)。但优先级并不保证执行顺序,只是影响调度概率。 7. **守护线程(Daemon)** - 守护线程不会阻止JVM的退出,常用于后台服务,如垃圾回收。 8. **线程池*...
Java并发之线程池Executor框架的深入理解 Java中的线程池Executor框架是Java并发编程中的一种常见机制,用于管理和执行异步任务。通过使用线程池,可以大大减少线程的创建和销毁开销,从而提高系统的性能和稳定性。...
1. **Executor框架**:这是一个用于管理和控制线程的高级API。它提供了一种将任务提交到线程池的方式,而不是直接创建新的线程,这有助于避免资源过度消耗的问题。 - `ExecutorService`:接口,定义了如何管理一组...
在Java开发中,Spring框架是广泛使用的,它不仅提供了丰富的功能,还支持诸如定时任务和多线程等高级特性。本示例将深入探讨如何在Spring框架中利用定时任务(Spring Task)启动多线程来执行并发操作。 首先,我们...
Java线程模块对于理解和实现多任务并行处理至关重要,尤其是在开发高效的、响应迅速的应用程序时。本节将深入探讨Java线程中的“秒表”概念,这是一种用于度量时间间隔的实用工具,常用于性能测试和调试。 首先,让...
Java线程是Java编程语言中的一个核心概念,它允许程序同时执行多个任务,极大地提高了程序的并发性和效率。本教程将深入探讨Java线程的使用,帮助开发者掌握这一关键技术。 一、线程基础 1. **线程的概念**:线程...
5. 线程状态:Java线程有五种状态:新建、就绪、运行、阻塞和终止。理解这些状态有助于分析和优化线程的执行流程。 6. 死锁:当两个或更多线程互相等待对方释放资源而无法继续执行时,就会发生死锁。避免死锁的关键...
Java的Executor框架提供了线程池管理,通过ThreadPoolExecutor类实现。线程池可以有效控制运行的线程数量,减少线程创建和销毁的开销,提高系统资源利用率。常用的线程池有FixedThreadPool、SingleThreadPool、...
- **线程优先级**:Java线程有10个优先级,但实际调度受操作系统的调度策略影响。 7. **线程中断** - **interrupt()与isInterrupted()**:用于中断和检测线程中断状态。 - **InterruptedException**:线程被中断...
在Java编程中,Spring框架是企业级应用开发的首选,它提供了一整套服务和支持,包括依赖注入、AOP(面向切面编程)、事务管理等。当我们谈到在Spring中实现多线程,实际上是在讨论如何在Spring环境中创建、管理和...
- **线程池**:Executor框架,通过ThreadPoolExecutor管理线程,提高性能和资源利用率。 - **线程局部变量(ThreadLocal)**:为每个线程提供独立的变量副本,避免共享状态。 5. **并发工具类** - **...
Java定时执行任务是Java开发中常见的一种需求,用于在特定时间点或按照预设周期执行某段代码。在Java中,有两种主要的方式来实现定时任务:Java.util.Timer类和java.util.concurrent包下的ScheduledExecutorService...
Java的`Executor`框架提供了一种更高级别的多线程管理机制,主要由三个组件组成:`Executor`、`ThreadPoolExecutor`、`ScheduledExecutorService`。 - **Executor**:最简单的任务执行服务接口,定义了执行命令的...