`
liangjian103
  • 浏览: 175853 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java5线程框架Executor 排程定时功能

 
阅读更多

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多线程案例教学

    Java 5引入了`Executor`框架,它提供了一种更加灵活的方式来管理和控制线程池,从而有效地管理线程生命周期。 - **示例代码**: ```java ExecutorService executor = Executors.newFixedThreadPool(10); // 创建...

    针对于Executor框架,Java API,线程共享数据

    - **提供任务调度功能**:除了基本的任务执行外,Executor框架还支持任务的定时执行和周期性执行,增强了程序的功能性和灵活性。 #### 2. 原子操作与Java API中的原子类 原子操作是并发编程中的另一个关键概念。一...

    Executor框架使用详解

    Executor框架是Java并发编程的核心组件,它在Java 5中被引入,极大地简化了多线程编程。这个框架是基于`java.util.concurrent`包中的接口和类构建的,旨在提供线程池服务、任务调度以及并发执行任务的能力。Executor...

    JAVA多线程教材

    4. **线程优先级与守护线程**:Java线程有优先级之分,可以影响调度,但实际效果取决于操作系统。守护线程(Daemon Thread)是一种特殊类型的线程,当它是系统中唯一运行的线程时,JVM会自动退出。 5. **并发集合与...

    掌握并发的钥匙:Java Executor框架深度解析

    为了简化多线程编程,Java标准库提供了`java.util.concurrent`包,其中包含了一系列高级并发工具,而Executor框架就是其中之一。 ### Executor框架概述 Executor框架提供了一种执行异步任务的方法,它允许开发者将...

    Java-Executor并发框架.docx

    Java并发框架中的Executor服务是Java 1.5引入的核心组件,位于`java.util.concurrent`包下,极大地简化了多线程编程。Executor接口虽然历史悠久,但其重要性不言而喻,很多开发者对其背后的原理并不十分了解。本文将...

    java多线程编程实例 (源程序)

    - Java线程有10个优先级,默认是Thread.NORM_PRIORITY(5)。但优先级并不保证执行顺序,只是影响调度概率。 7. **守护线程(Daemon)** - 守护线程不会阻止JVM的退出,常用于后台服务,如垃圾回收。 8. **线程池*...

    Java并发之线程池Executor框架的深入理解

    Java并发之线程池Executor框架的深入理解 Java中的线程池Executor框架是Java并发编程中的一种常见机制,用于管理和执行异步任务。通过使用线程池,可以大大减少线程的创建和销毁开销,从而提高系统的性能和稳定性。...

    黑马程序员_张孝祥_Java多线程与并发库 视频+代码+资料

    1. **Executor框架**:这是一个用于管理和控制线程的高级API。它提供了一种将任务提交到线程池的方式,而不是直接创建新的线程,这有助于避免资源过度消耗的问题。 - `ExecutorService`:接口,定义了如何管理一组...

    定时任务启动多线线程示例

    在Java开发中,Spring框架是广泛使用的,它不仅提供了丰富的功能,还支持诸如定时任务和多线程等高级特性。本示例将深入探讨如何在Spring框架中利用定时任务(Spring Task)启动多线程来执行并发操作。 首先,我们...

    Java线程模块Java线程之秒表

    Java线程模块对于理解和实现多任务并行处理至关重要,尤其是在开发高效的、响应迅速的应用程序时。本节将深入探讨Java线程中的“秒表”概念,这是一种用于度量时间间隔的实用工具,常用于性能测试和调试。 首先,让...

    Java线程使用教程

    Java线程是Java编程语言中的一个核心概念,它允许程序同时执行多个任务,极大地提高了程序的并发性和效率。本教程将深入探讨Java线程的使用,帮助开发者掌握这一关键技术。 一、线程基础 1. **线程的概念**:线程...

    java多线程基础资料

    5. 线程状态:Java线程有五种状态:新建、就绪、运行、阻塞和终止。理解这些状态有助于分析和优化线程的执行流程。 6. 死锁:当两个或更多线程互相等待对方释放资源而无法继续执行时,就会发生死锁。避免死锁的关键...

    Java多线程的总结

    Java的Executor框架提供了线程池管理,通过ThreadPoolExecutor类实现。线程池可以有效控制运行的线程数量,减少线程创建和销毁的开销,提高系统资源利用率。常用的线程池有FixedThreadPool、SingleThreadPool、...

    Java多线程实战精讲-带你一次搞明白Java多线程高并发

    - **线程优先级**:Java线程有10个优先级,但实际调度受操作系统的调度策略影响。 7. **线程中断** - **interrupt()与isInterrupted()**:用于中断和检测线程中断状态。 - **InterruptedException**:线程被中断...

    java中spring里实现多线程

    在Java编程中,Spring框架是企业级应用开发的首选,它提供了一整套服务和支持,包括依赖注入、AOP(面向切面编程)、事务管理等。当我们谈到在Spring中实现多线程,实际上是在讨论如何在Spring环境中创建、管理和...

    java多线程设计

    - **线程池**:Executor框架,通过ThreadPoolExecutor管理线程,提高性能和资源利用率。 - **线程局部变量(ThreadLocal)**:为每个线程提供独立的变量副本,避免共享状态。 5. **并发工具类** - **...

    java 定时执行任务

    Java定时执行任务是Java开发中常见的一种需求,用于在特定时间点或按照预设周期执行某段代码。在Java中,有两种主要的方式来实现定时任务:Java.util.Timer类和java.util.concurrent包下的ScheduledExecutorService...

    java多线程核心编程技术

    Java的`Executor`框架提供了一种更高级别的多线程管理机制,主要由三个组件组成:`Executor`、`ThreadPoolExecutor`、`ScheduledExecutorService`。 - **Executor**:最简单的任务执行服务接口,定义了执行命令的...

Global site tag (gtag.js) - Google Analytics