Java 执行器无法对任务进行排队

2024-04-04

我需要一个 Java 执行器,如果正在处理其他任务,它会拒绝任务。我想不可能操纵工作队列大小。

有人可能会奇怪,为什么我首先需要一个具有这种特征的执行者。我需要能够轻松更改策略并允许非零队列大小。

有任何想法吗?


Use a 线程池执行器 http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadPoolExecutor.html with a 同步队列 http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/SynchronousQueue.html(复制自这个答案 https://stackoverflow.com/a/10186825/3080094).

它似乎有效:

import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.Semaphore;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class SingleTaskExecutor {

public static void main(String[] args) {

    try {
        new SingleTaskExecutor().runTest();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public void runTest() throws Exception {

    ThreadPoolExecutor tp = new ThreadPoolExecutor(1, 1,
            60L, TimeUnit.SECONDS,
            new SynchronousQueue<Runnable>());

    tp.setRejectedExecutionHandler(new RejectedTaskHandler());

    final Semaphore oneTaskDone = new Semaphore(0);
    tp.execute(new Runnable() {
        @Override public void run() { 
            System.out.println("Sleeping");
            try { Thread.sleep(300); } catch (Exception e) { e.printStackTrace();} 
            System.out.println("Done sleeping");
            oneTaskDone.release();
        }
    });
    tp.execute(new Runnable() {
        @Override public void run() { System.out.println("Never happends"); }
        @Override public String toString() { return "Rejected Runnable"; }
    });
    oneTaskDone.acquire();
    tp.execute(new Runnable() {
        @Override public void run() { System.out.println("Running"); }
    });
    tp.shutdown();
    tp.awaitTermination(100, TimeUnit.MILLISECONDS);
    System.out.println("Finished");
}

static class RejectedTaskHandler implements RejectedExecutionHandler {

    @Override public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
        System.out.println("Task rejected: " + r);
    }

}

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 执行器无法对任务进行排队 的相关文章

  • 返回一个dispatch_async获取的变量[重复]

    这个问题在这里已经有答案了 基本上 一个方法需要返回一个在dispatch async中获取的NSDictionary 这是我尝试过的 NSDictionary fetchNSDictionary dispatch queue t Queu
  • 使用 Exec Maven 插件分叉 Java,而不使用“exec”目标

    来自文档 https www mojohaus org exec maven plugin exec exec在单独的进程中执行程序和Java程序 exec java在同一虚拟机中执行 Java 程序 我想 fork 一个 java 程序
  • 通过Zuul上传大文件

    我在通过 zuul 上传大文件时遇到问题 我正在使用 apache commons 文件上传 https commons apache org proper commons fileupload https commons apache o
  • 什么是内部类的合成反向引用

    我正在寻找应用程序中的内存泄漏 我正在使用的探查器告诉我寻找这些类型的引用 但我不知道我在寻找什么 有人可以解释一下吗 Thanks Elliott 您可以对 OUTER 类进行合成反向引用 但不能对内部类实例进行合成 e g class
  • 我对线程失去了理智

    我想要这个类的对象 public class Chromosome implements Runnable Comparable
  • Guzzle 中的“并发”到底是什么?

    我没有找到太多关于concurrency选项中Pool 如果这是可以在服务器上打开的 TCP 套接字数量 那么问题是 我可以使用多少并发来更快地处理请求 我有这个使用的例子Pool I am using Laravel this is ba
  • 线程池,C++

    我正在使用 C 开发一个网络程序 我想实现一个 pthread 池 每当我从接收套接字接收到一个事件时 我都会将数据放入线程池中的队列中 我正在考虑创建 5 个独立的线程 并将持续检查队列以查看是否有任何传入数据需要完成 这是一个非常简单的
  • Python 中 time.sleep 和多线程的问题

    我对 python 中的 time sleep 函数有疑问 我正在运行一个脚本 需要等待另一个程序生成 txt 文件 虽然 这是一台非常旧的机器 所以当我休眠 python 脚本时 我遇到了其他程序不生成文件的问题 除了使用 time sl
  • java中如何知道一条sql语句是否执行了?

    我想知道这个删除语句是否真的删除了一些东西 下面的代码总是执行 else 是否删除了某些内容 执行此操作的正确方法是什么 public Deleter String pname String pword try PreparedStatem
  • 在光标所在行强制关闭!

    嘿 我正在尝试创建一个应用程序来查找存储在 SQlite 数据库中的 GPS 数据 但我面临一个问题 我构建了一个 DbAdapter 类来创建数据库 现在我尝试使用以下函数从另一个类获取所有数据上的光标 public Cursor fet
  • 在 Spring 中为 @Pathvariable 添加类级别验证

    在发布这个问题之前 我已经做了很多研究并尝试了很多可用的解决方案 这是我陷入的棘手情况 我有一个 Spring 控制器 它有多个请求映射 它们都有 PathVariables 控制器如下所示 Controller EnableWebMvc
  • Mockito 和 Hamcrest:如何验证 Collection 参数的调用?

    我遇到了 Mockito 和 Hamcrest 的泛型问题 请假设以下界面 public interface Service void perform Collection
  • 使用 JDBC 连接到 PostgreSql 的本地实例

    我在 Linux 机器上有一个正在运行的 PostgreSql 本地实例 当我使用psql来自 shell 的命令我成功登录 没有任何问题 我需要通过 JDBC 连接到 PostgreSql 但我不知道我到底应该传递什么url参数为Driv
  • 为什么解析这个 JSON 会抛出错误?

    我正在尝试解析这个 JSONObject query yahoo count 1 results rate Name USD INR id USDINR Time 12 19pm Date 10 31 2015 Bid 65 405 Ask
  • 如何自定义舍入形式

    我的问题可能看起来很简单 但仍然无法得到有效的东西 我需要自定义 Math round 舍入格式或其他格式以使其工作如下 如果数字是 1 6 他应该四舍五入到 1 如果大于或等于 1 7 他应该四舍五入到 2 0 对于所有其他带有 6 的小
  • 为什么Apache MPM prefork.c 使用互斥体来保护accept()?

    我坐下来读书Apache 的 MPM prefork c http code metager de source xref apache httpd server mpm prefork prefork c这段代码使用了一个名为accept
  • 如何使用 Jersey 将嵌套列表封送为 JSON?我得到一个空数组或一个包含数组的单元素字典数组

    我正在开发一个使用 Jersey 将对象转换为 JSON 的项目 我希望能够写出嵌套列表 如下所示 data one two three a b c 我想要转换的对象首先将数据表示为 gt gt 我认为 Jersey 会做正确的事情 以上输
  • Lombok 不适用于 Eclipse Neon

    我下载了lombok jar lombok 1 16 14 jar 并将其放入我的下载中 然后我点击这个 jar 执行正确地识别了我的 MacOS 上的 Eclipse 实例 然后我选择了我想要的实例 Lombok也在pom xml中指定
  • Android计算两个日期之间的天数

    我编写了以下代码来查找两个日期之间的天数 startDateValue new Date startDate endDateValue new Date endDate long diff endDateValue getTime star
  • 在会话即将到期之前调用方法

    我的网络应用程序有登录的用户 有一个超时 在会话过期之前 我想执行一个方法来清理一些锁 我已经实现了sessionListener但一旦我到达public void sessionDestroyed HttpSessionEvent eve

随机推荐

  • Maven - 在 Eclipse 中抑制覆盖托管版本警告

    我在用spring boot 并且遇到了类似于所描述的错误here https stackoverflow com q 14730329 2860319 我将以下内容添加到我的 pom xml 中
  • 逆向工程iOS天气应用程序UI组件[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在尝试写下 iOS 天气应用程序的摘要 我感兴趣的主要组件在下图中标记为 1 2 3 4 和 5 UI 应获取如下 一个 ViewContr
  • 如果行中的特定单元格不为空,则格式化整行

    我想根据其中的特定单元格是否为空来格式化整行 我希望条件格式能够遍历所有行 并在该行中的 C 列不为空时添加背景颜色 我该如何解决 为了说明假设 整行 包含 A Z 列 请尝试格式 条件格式 自定义公式是 C1 lt gt 与您选择的格式和
  • 何时使用表达式混合创建用户控件

    因此 我正在开发一个新应用程序 并且我正在使用 Expression Blend 第一次 来创建布局和样式等 但我有一个关于何时要创建用户控件的问题 我有一个蛀虫 我想用它作为很多东西的背景 但它实际上是边框中的边框 然后我们将把任何控件放
  • 如何使用 Exchange Web 服务 (EWS) API 通过共享邮箱发送电子邮件

    我正在使用 MS Exchange Web 服务 API 通过共享邮箱发送电子邮件 发送电子邮件可以工作 但它们不会保存在已发送的项目中 如下所示 手动执行此操作 项目保存在已发送项目中 但通过我的代码不会保存它们 using Micros
  • 循环变量文件名[重复]

    这个问题在这里已经有答案了 我正在使用 Fortran 对分成许多文件的庞大数据集进行计算 文件的名称是 maltoLyo12per reimage set1 traj maltoLyo12per reimage set2 traj mal
  • 使用 angularjs 将多个对象发送到 webapi

    我的 ASP NET WebApi 应用程序中有以下控制器 Route api PutItem HttpPut public IHttpActionResult PutItem Guid id Item item if ModelState
  • 如何在TabControl.ContentTemplate中添加新的用户控件?

    我不太愿意在中添加用户控件的新实例TabControl ContentTemplate 我的 Xaml 在这里
  • 软件版本编号遵循什么规则? [复制]

    这个问题在这里已经有答案了 我一直在开发一些软件并想给它版本号 我该怎么做呢 为什么有些软件有两个版本 比如1 3v1 1 或者有些有 3 个数字 4 0 1 这一切背后的方法是什么 Thanks 我见过的常用方法是X Y Z 一般对应ma
  • 单元测试作为构建的一部分

    我有一个 CMake 项目 分为三个部分 我的库的编译 编译许多单元测试程序来测试这些库的每个精确子部分 使用这些库编译程序示例 My question is about the 2nd part My unit tests executa
  • 如何使用 django-filters 重命名(在 API 中公开)过滤器字段名称?

    正如问题所述 我正在尝试重命名 API 中公开的过滤器字段名称 我有以下型号 class Championship Model class Group Model championship ForeignKey Championship c
  • qwt 图表示例 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 大家好 我正在使用 qwt 我是新手 我想使用 qwt 和 qt 创建者绘制图表 我不知道要在我的 qt 项目中包含哪些库来绘制图表 我已
  • 在 Python 中下载、解压并读取 gzip 文件

    我想在 Python 中下载 提取和迭代文本文件 而无需创建临时文件 基本上 这个管道 但是在 python 中 curl ftp ftp theseed org genomes SEED SEED fasta gz gunzip proc
  • Array.prototype.filter.call(forms, function(form) 这是做什么的?

    我很难完全理解这段代码是如何工作的 这只是表单验证代码复制并从引导程序粘贴 我的问题从这一行开始 var 验证 Array prototype filter call forms function form 在我看来 它正在创建一个名为va
  • 如果启用身份验证,Azure 上的查询/标头太大

    我有一个在本地运行良好的节点 快速应用程序 我已将其上传到 Azure Web App 只要我不启用身份验证 它就可以正常工作 当我启用 AAD 身份验证时 应用程序失败并显示状态 500 1011 错误请求 我的网址中有很多查询参数 如果
  • 在 Git 中:为什么经常提交是件好事? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 所以我对 Git 和 DVCS 总体来说还很陌生 而且我一直在到处读到 至少在私有分支上 一直提交总是好的 问题是 为什么 我正在使用 Sour
  • 纯Python四叉树实现

    All 有一些使用 Python 实现四叉树的示例 但我的问题是 有谁知道用纯 python 编写的类 在单个 py 文件中 我可以轻松地将其包含在我的项目中 这里列出了三个最受欢迎的软件包这些四叉树库中的任何一个都好吗 https sta
  • Silverlight:如何处理标准程序集

    一个常见的 Silverlight 任务 减小 xap 文件的大小 有很多热门手册解释了如何使应用程序模块化 但我没有找到任何人解释如何制作 模块化 标准库 我的 xap 文件的最大部分 1 7Mb 当整体大小为 1 8Mb 时 被标准程序
  • 访问 Scala 中可用但 PySpark 中不可用的依赖项

    我正在尝试访问 RDD 的依赖项 在 Scala 中 这是一个非常简单的代码 scala gt val myRdd sc parallelize 0 to 9 groupBy 2 myRdd org apache spark rdd RDD
  • Java 执行器无法对任务进行排队

    我需要一个 Java 执行器 如果正在处理其他任务 它会拒绝任务 我想不可能操纵工作队列大小 有人可能会奇怪 为什么我首先需要一个具有这种特征的执行者 我需要能够轻松更改策略并允许非零队列大小 有任何想法吗 Use a 线程池执行器 htt