`
xuyongping
  • 浏览: 119651 次
  • 性别: Icon_minigender_1
  • 来自: 部落格
社区版块
存档分类
最新评论

超时任务

 
阅读更多
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

/**
*
* @author Kaiwii Ho
* Callable类就是一个有返回值的任务
* 对于任务与Thread之间的关系,可以这样子理解:
* Callable类的实例就是一个锦囊妙计;而Thread就是执行这个锦囊妙计的过程
*
* FutureTask类(Future接口的一个实现)就是一个监视器:检测着被若干个异步线程操作的变量的一个类
*
* 代码演示了主线程如何通过使用Callable类和FutureTask类,实现:
* 主线程一边等待子线程的处理结果,一边完成自己的工作。
*
*考虑以下一个小黑工kaiwii的故事……
*/
public class TestFutureTask {
   


    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //准备一份工作给一个打工仔employee叫Kaiwii
        Employee kaiwii=new Employee("kaiwii");
        //新建一个监工头inspector
        FutureTask<Double>inspector=new FutureTask<Double>(kaiwii);
        //让kaiwii这个打工仔工作
        System.out.println("老板发话,让kaiwii这个打工仔工作吧!");
        new Thread(inspector).start();
        System.out.println("老板开始数钱!");
        //老板一边数钱,一边命令监工inspector监视Kaiwii工作;一旦kaiwii完成工作就拿来让他检查
        while(!inspector.isDone()){
            System.out.println("老板数钱中……");
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
           
        }
        //老板交监工inspector将kaiwii的结果呈上来以便他验收kaiwii计算出来的结果
        try {
            System.out.println("老板发现kaiwii的结果是:"+inspector.get());
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ExecutionException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

//子线程
class Employee implements Callable<Double>{
    String employee_name;
   
    private void setEmployee_name(String employee_name) {
        this.employee_name = employee_name;
    }
   
    public Employee(String employee_name) {
        setEmployee_name(employee_name);
    }
    @Override
    public Double call() throws Exception {
        // TODO Auto-generated method stub
        System.out.println("工人"+employee_name+"说:我开始工作了!!!!");
        for(int i=1;i<=10;i++){
            System.out.println("工人"+employee_name+" 第"+i+"次说:我在工作呢!!!!");
            Thread.sleep(1000);
        }
        System.out.println("工人"+employee_name+"说:我搞好了!!!!");
        return Math.random();
    }
}
分享到:
评论

相关推荐

    基于Java+netty内置时间轮工具处理大批量定时或超时任务工具源码.zip

    基于Java+netty内置时间轮工具处理大批量定时或超时任务工具源码.zip

    vCenter任务、事件清除

    vCenter中任务、事件清除 适用于:vCenter 6.x,数据库为内置数据库非第三方数据库; 用法:压缩包文件解压到C盘根目录,运行批处理即可,

    BlockingQueue队列自定义超时时间取消线程池任务

    定义全局线程池,将用户的请求放入自定义队列中,排队等候线程调用,等待超时则自动取消该任务,实现超时可取消的异步任务

    Java实现任务超时处理方法

    任务超时处理是比较常见的需求,Java中对超时任务的处理有两种方式,在文中给大家详细介绍,本文重点给大家介绍Java实现任务超时处理方法,需要的朋友可以参考下

    多线程管理框架支持超时退出任务回调处理

    一直用线程池,但有些时候发现线程池无法控制结束某个超时等待的线程任务,所以就勉为其难的自己写了个线程管理~。作用:模仿线程池操作,管理多线程任务,超时,以及完成任务的回调。如果有bug自行处理,服务器挂机...

    timeouter:创建和管理重复的超时任务

    创建和管理重复任务入门[sudo] npm install timeouter --save例子//Start a basic repeating logvar func = timeouter . add ( {func : function ( ) {console . log ( "Repeating event" )} ,timeout : 1000} )//...

    Android 异步任务 设置 超时使用handler更新通知功能

    Android 使用AsyncTask设置请求超时的注意事项 final AsyncTaskTools task = new AsyncTaskTools(dialog, doTask, result, context); mTask.execute(蓝牙读卡); new Thread() { public void run() { try { /** ...

    线程超时死掉

    Future接口提供方法来检测任务是否被执行完,等待任务执行完获得结果,也可以设置任务执行的超时时间。这个设置超时的方法就是实现Java程 序执行超时的关键。 Future接口是一个泛型接口,严格的格式应该是Future...

    task:高效的线程池任务调度框架-开源

    不用担心task-running-overtime,因为task框架已经实现了对超时任务的监控,一旦任务超时,任务监控器会将其从线程池中移除,还能帮你自动结束超时任务。 3.任务调度框架性能优良,如果任务队列为空,框架会自动...

    线程池和超时线程的实现(附源码)

    单个任务处理的时间比较短 2.将需处理的任务的数量大 使用线程池的好处: 1.减少在创建和销毁线程上所花的时间以及系统资源的开销 2.如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以及”过度切换...

    PHP进行批量任务处理不超时的解决方法

    主要介绍了PHP进行批量任务处理不超时的解决方法,结合实例形式简单分析了php结合ajax进行异步处理实现批量任务不超时的相关技巧,需要的朋友可以参考下

    .net C#线程超时

    .net C#线程超时的解决方案,使用的时候在被调线程入口调用一下这个方法就可以。更多详细代码见附件 Report.RegisterThread(Report.GetCurrentWin32ThreadID(),Thread.CurrentThread); #region 获取当取线程的...

    定时任务SpringTask -超时15分钟取消订单

    定时任务SpringTask -超时15分钟取消订单

    .net c#线程超时解决方案

    .net C#线程超时的解决方案,使用的时候在被调线程入口调用一下这个方法就可以。更多详细代码见附件 Report.RegisterThread(Report.GetCurrentWin32ThreadID(),Thread.CurrentThread); #region 获取当取线程的...

    毕业设计定时任务管理系统/期末作业定时任务管理系统

    任务执行超时, 强制结束 任务依赖配置, A任务完成后再执行B任务 账户权限控制 任务类型 shell任务 在任务节点上执行shell命令, 支持任务同时在多个节点上运行 HTTP任务 访问指定的URL地址, 由调度器直接执行, 不...

    人工智能-项目实践-管理系统-定时任务管理系统

    任务执行超时, 强制结束 任务依赖配置, A任务完成后再执行B任务 账户权限控制 任务类型 shell任务 在任务节点上执行shell命令, 支持任务同时在多个节点上运行 HTTP任务 访问指定的URL地址, 由调度器直接执行, 不...

    众人帮任务悬赏平台系统源码

    5.雇主发布任务会有时间限制,超时不审核就会自动审核通过,佣金进入用户帐号中, 6.任务可置顶,可以付费置顶,按天算, 7.雇主可以自己审核任务,可以留言用户是否完成, 8.用户提现后会扣除一定数额的费用,给...

    全新UI威客任务平台源码支持投票任务发布平台【2019最新】

    5.雇主发布任务会有时间限制,超时不审核就会自动审核通过,佣金进入用户帐号中, 6.任务可置顶,可以付费置顶,按天算, 7.雇主可以自己审核任务,可以留言用户是否完成, 8.用户提现后会扣除一定数额的费用,给...

    Quartz.net作业调度自定义定时执行任务多任务执行c#

    Quartz.net作业调度自定义定时执行任务多任务执行c#,定时执行任务,如超时取消订单,自动确认收货等等

Global site tag (gtag.js) - Google Analytics