问题标签 [managedthreadfactory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ExecutorService 的线程和线程池命名
假设我有一个使用Executor
框架的应用程序
当我在调试器中运行此应用程序时,会使用以下(默认)名称创建一个线程:Thread[pool-1-thread-1]
. 如您所见,这并不是非常有用,据我所知,该Executor
框架没有提供一种简单的方法来命名创建的线程或线程池。
那么,如何为线程/线程池提供名称呢?例如,Thread[FooPool-FooThread]
.
java - 如何在 Glassfish V4.0 中创建 ManagedThreadFactory 实例
我从 Glassfish V4.0(build 89)容器中运行的 Java 代码内部调用 rabbitMQ 客户端(而不是服务器),以连接到另一台机器上的 rabbitmq 服务器。根据 rabbitmq 客户端文档,我们应该为 rabbitmq 连接提供一个 ManagedThreadFactory 实例来创建线程。
我尝试使用注入 DefaultManagedThreadFactory
ctx.lookup("java:comp/DefaultManagedThreadFactory")
那失败了
在 SerialContext 中查找“java:comp/DefaultManagedThreadFactory”失败...
尝试@Resource(lookup="concurrent/__DefaultManagedThreadFactory")会导致 NPE。
我对 java EE 并不感兴趣,我只是将这个容器用作我的球衣 Web 服务的前端。显然我需要做更多/不同的事情。但是,除了
http://javahowto.blogspot.in/2011/02/how-to-create-and-look-up-thread-pool.html
任何 Java EE 专家都可以告诉我正确的巫毒咒语来完成这项工作吗?
更新 1
更新 2
axel - 我的情况没有什么特别之处。我正在看的是在 GFV4 中尝试一个 rabbitmq java 客户端。所以重现问题
- 你需要运行rabbitmq服务器
- 使用客户端代码连接到rabbitmq服务器,客户端代码是部署在GF上的战争的一部分
- 根据 rabbitmq 客户端 API 指南(https://www.rabbitmq.com/api-guide.html)@see自定义线程工厂部分。他们将线程实例化委托给容器。
- rabbitmq java客户端代码在Github上
我可以从 GF 管理控制台看到 ManagedThreadFactory 名称,所以它应该在那里。
更新 3
托管线程工厂和托管执行器服务可以使用 JNDI 定位。但是,无法将相同的资源注入使用 Jersey Web 服务的代码中。资源注入与一个简单的 servlet 示例一起工作(例如 Github 上的 java EE7 示例)
这是由于球衣/Hk2/CDI/焊接等的相互作用吗?我正在寻找一个权威的答案来解释为什么我不能让资源注入工作?
jakarta-ee - “传统”线程无法在 WildFly 中查找 JNDI 名称
我正在将旧应用程序(不使用 bean 或依赖注入)从 Weblogic 迁移到 WildFly。在大多数情况下,它现在可以正常工作。但是,它也以“传统方式”(new Thread()
)创建线程,这些线程无法查找 JNDI 名称,这意味着它们无法使用数据库和邮件。
看来我需要使用托管线程工厂来创建线程。这样,新线程应该仍然能够看到容器中定义的 JNDI 名称。但是,我不确定如何从容器中检索这样的工厂。我能找到的所有示例都使用依赖注入,而应用程序的编写完全没有依赖注入。
那么,如何从自己创建的线程中访问 JNDI 名称呢?或者,如何检索可用于创建仍可看到容器及其 JNDI 绑定的线程的托管线程工厂?
java - 关机还是不关机?在 ExecutorService (Java8)
我试图了解执行程序服务相对于关机的行为。文档说除非有 shutdown() 调用,否则应用程序不会终止——但在这个简单的例子中。它精确地在一分钟后退出。任何想法?
返回:11:34:00.421:Thread-0:什么都不做构建成功(总时间:1 分 0 秒)
java - 如果我的 Java ThreadPoolTaskExecutor 被调用的次数超过“maxPoolSize”设置会怎样?
我将 Java 6 与 Spring 3.2.11.RELEASE 和 JBoss 7.1.3.Final 一起使用。我在我的 Spring 应用程序上下文文件中有这个
我的问题是,如果我在上述设置下调用 taskExecutor 的执行方法 300 次,那么当前 10 个线程排队时,其他 290 个线程会发生什么情况?它们会被丢弃还是只是一次执行 10 个线程?
ruby - 如何在 Ruby on Rails(相当于 Java 线程工厂)中管理多个线程?
我正在使用 Ruby on Rails 5,尽管我是 Ruby/Rails 的新手。我已阅读有关使用创建线程的信息
但是,我想知道是否有一种标准方法可以在 Ruby/Rails 中管理一堆应用程序创建的线程。我熟悉Java,它有一个线程工厂。这允许一定数量的线程同时运行,而其他线程必须在队列中等待。我想知道如何在 Ruby/Rails 中做类似的事情。
请注意,我不是在谈论请求网页时自动生成的线程类型。我说的是我(应用程序所有者)创建的线程。
jakarta-ee - 如何在 Java-ee 中构建递归树?
这是我的伪代码:
由于 Java-ee 不支持 ForkJoinPool - 这是不可能的。那么我该如何使用 ManagedThreadFactory 和/或 ManagedExecutorService 呢?我真正的挑战是由于无法在 Java-ee 中调用 pool.shutdown() 或 pool.awaitTermination。所以,从来电者那里,如果我这样做:
然后我的方法不会等待所有 pool.submit(new Builder(childObj, pool)) ,因此我的对象没有设置所有内容并且不完整。我想将 pool.submit 返回的所有 Futures 放入阻塞队列中 - 但是我不知道如何通知调用者我的树遍历已完成。当树遍历完成时,我确实有一个计数器达到 0,但是由于客户端正在提交一个顶级节点,我不确定如何让它在 Java-ee 中等待而没有 while(isCounter = 0) - 这是一个 CPU 猪。
任何指针?
java - 如何等待我的线程工厂完成其所有任务的执行?
我正在使用带有 Java 7 的 Spring 4.3.8.RELEASE。我想创建一个线程工厂来帮助管理我的应用程序中的某些工作人员。我这样声明我的线程工厂
但是,我在线程上“加入”时遇到了麻烦。也就是说,我想在继续执行某个任务之前等待所有工作完成,所以我有
我的线程池是这样执行的
然而打印出来的是
很明显,我没有在等。等待我的线程完成工作的正确方法是什么?
java - 根据 ThreadFactory 的可运行输入的实例类型为 ExecutorService ScheduledExecutorService 实现自定义命名
我有一个ExecutorService
andScheduledExecutorService
我正在使用 customThreadFactory
以便我可以根据 Thread 工厂的输入类型命名每个线程以runnable
创建线程,但输入runnable
的ThreadFactory
类型是ThreadPoolExecutor$Worker
. 以下是我的ThreadFactory
实现。如何runnable
从线程创建 ExecutorService
中获取实际信息?ScheduledExecutorService
AcquirerTransaction
&IssuerTransaction
实现Runnable
。
java - java Guava ThreadFactoryBuilder 为什么我们需要计数为 AtomicLong
最近我开始研究在线程池中创建新线程ThreadFactory
使用哪个。ThreadPoolExecutor
为了方便调试和监控,我们不希望线程池创建的线程是默认的0、1、2、3,而是取一个有意义的名字。
实现这一目标的一种方法是实现一个自定义ThreadLoad
的,可以在创建线程时设置线程的名称。Guava有一个方便的自定义构建器类ThreadFactory
,我希望从中学习。
理解这个类的大部分内容并不难,但我对方法count
中的变量感到很困惑。doBuild
我还去了实际调用的ThreadPoolExecutor#Worker
源代码newThread()
。ThreadFactory
但我仍然不清楚为什么我们需要一个原子变量。
当然,我可以猜测线程池中的线程可能是以多线程方式创建的,因此为了确保线程的 id 不会重复,我们需要 id-generator 是一个原子变量,但我没有直接证据这个假设呢。
任何人都可以对此有所了解吗?