`
liangjian103
  • 浏览: 172938 次
  • 性别: 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多线程之Executor框架.docx

    一、为什么要引入Executor框架? 1、如果使用new Thread(…).start()的方法处理多线程,有如下缺点: ① 开销大。对于JVM来说,每次新建线程和销毁线程都会有很大的开销。 ② 线程缺乏管理。没有一个池来限制线程的...

    Java基础篇:Executor框架.pdf

    该文档详细记录了Executor框架结构、使用示意图、ThreadPoolExecutor使用示例、线程池原理分析、几种常见线程池(FixedThreadPool、SingleThreadExecutor、CachedThreadPool)的详解以及线程池大小确定等内容

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

    Executor框架是Java并发编程中的一个重要工具,它提供了一种管理线程池的方式,使得我们可以更方便地管理线程的生命周期和执行线程任务。 原子操作是指不可被中断的操作,要么全部执行成功,要么全部不执行。原子...

    JavaExecutor并发框架.pdf

    JavaExecutor并发框架.pdf

    Java-Executor并发框架.docx

    Java是天生就支持并发的语言,支持并发意味着多线程,线程的频繁创建在高并发及大数据量是非常消耗资源的,因为java提供了线程池。这篇文章主要介绍下并发包下的Executor接口,Executor接口虽然作为一个非常旧的接口...

    多线程系列相关的技术要点

    1. Java多线程学习(一)Java多线程入门 2. Java多线程学习(二)synchronized关键字(1) 3. Java多线程学习(二)synchronized关键字(2) 4. Java多线程学习(三...9. Java多线程学习(八)线程池与Executor 框架

    Storm Executor Task QuartzJob流式框架定时任务处理框架

    Storm Executor Task QuartzJob流式框架定时任务处理框架

    java并发编程:Executor、Executors、ExecutorService.docx

    其定义了一个接收Runnable对象的方法executor,其方法签名为executor(Runnable command),该方法接收一个Runable实例,它用来执行一个任务,任务即一个实现了Runnable接口的类,一般来说,Runnable任务开辟在新线程中...

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

    主要介绍了Java并发之线程池Executor框架的深入理解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Executor框架图

    非常好的Java并发框架Executor图例,结构清晰,继承关系清楚。

    Java并发Executor框架

     调用关系:Java线程一对一映射到本地操作系统的系统线程,当多线程程序分解若干任务,使用用户级的调度器(Executor框架)将任务映射为固定数量的线程,底层,操作系统吧、内核将这些线程映射到硬件处理器上。...

    Java并发框架:Executor API详解

    主要介绍了Java并发框架:Executor API详解,随着当今处理器中可用的核心数量的增加, 随着对实现更高吞吐量的需求的不断增长,多线程 API 变得非常流行。 Java 提供了自己的多线程框架,称为 Executor 框架,需要的...

    Executor框架使用详解

    NULL 博文链接:https://jsx112.iteye.com/blog/865884

    并发编程实践,全面介绍基础知识、JVM同步原语、线程安全、低级并发工具、线程安全容器、高级线程协作工具、Executor部分等

    详细介绍java并发编程相关知识: 基础知识   并发与并行   Java并发演进历史   Java并发模型   线程模型   存储模型 JVM同步原语 volatile CAS 线程安全   保护“共享数据” 低级并发工具   原子变量   锁...

    Java Executor 框架的实例详解

    主要介绍了Java Executor 框架的实例详解的相关资料,这里提供实例来帮助大家学习理解这部分内容,需要的朋友可以参考下

    个人总结的深入java多线程开发

    看完《think in java》多线程章节,自己写的多线程文档,还结合了其他的相关网络资料。 线程 一. 线程池 1)为什么要使用线程池 2 2)一个具有线程池的工作队列 3 3)使用线程池的风险: 4 4)有效使用线程池的原则 5...

    java线程学习笔记

    2.3 线程本地存储(Java.lang.ThreadLocal) 15 2.4 线程阻塞 17 2.4.1 调用sleep(millisecond)使任务进入休眠状态 17 2.4.2 等待输出与输入 17 2.4.3 对象锁不可用 17 2.4.4 通过wait()使线程挂起。 17 2.5 线程...

    什么是线程?Java中如何创建和管理线程?(java面试题附答案).txt

    通过将 MyRunnable 对象传递给 Thread 类...Executor 框架和线程池:用于管理和调度线程的执行。 通过合理地创建和管理线程,我们可以实现复杂的并发执行逻辑,提高程序的性能和响应能力,并确保线程之间的安全和协调。

    线程超时死掉

    解决线程的死掉问题和超时问题特别好使,在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java线程池ExecutorService类配合Future接口来实现。 Future接口是Java标准API的一部分,在java.util.concurrent...

Global site tag (gtag.js) - Google Analytics