【问题标题】:ExecutorService only run most recently added CallableExecutorService 仅运行最近添加的 Callable
【发布时间】:2012-02-09 00:36:53
【问题描述】:

我有一个单线程执行器服务,用于通过网络获取一些数据。

当用户在搜索框中输入内容时,我正在排队可能的网络任务。我想要的是取消所有以前的请求,只排队并立即运行最新的请求。

我目前的做法是重写exe​​cute()和submit()方法并在调用super之前清空队列。

对此有什么想法吗?

【问题讨论】:

    标签: java multithreading executorservice executor executors


    【解决方案1】:

    不明白,为什么不保存在向服务发布可调用时返回的Future,然后保存cancel() 如果你不希望它被执行的未来。

    例如

    Future f1 = service.submit(some_task);
    
    // later
    
    f1.cancel(true); // will interrupt if running...
    

    更清洁的海事组织...

    【讨论】:

    • 随着用户输入越来越多的请求被排入队列。我想跳过所有这些请求,只运行排队的最后一个。
    • @dnkoutso,对,所以将所有期货保存在一个列表中,并在添加新期货之前取消所有以前的期货...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多