当前位置: 首页 > 面试题库 >

如何用Java命名线程池中的线程

秦光启
2023-03-14
问题内容

我有一个使用该Executor框架的Java应用程序,并且我的代码看起来像这样 protected ScheduledExecutorService scheduledExecutorService = new ScheduledThreadPoolExecutor(5)

我的理解是,JVM会在内部创建5个线程的池。现在,当我在探查器中检查执行情况时,会得到类似的thread-pool2,thread-pool3信息。

Some of these thread pools are created by the server and some are created by me我需要一种方法来区分由我创建的和由服务器创建的

我在想,如果我可以命名线程池,它应该可以解决问题,但是看不到任何允许我执行此操作的API。

提前致谢。


问题答案:

您可以将自己的ThreadFactory传递给ScheduledThreadPoolExecutor。您的ThreadFactory将创建线程,并可以为其指定任何名称。您的ThreadFactory也可以重用Executors.defaultThreadFactory(),并且仅在返回线程之前更改名称。



 类似资料:
  • 问题内容: 假设我有一个利用该框架的应用程序 当我在调试器中运行此应用程序时,将使用以下(默认)名称创建一个线程:。如你所见,这并不是非常有用,而且据我所知,该框架没有提供一种简便的方法来命名已创建的线程或线程池。 那么,如何为线程/线程池提供名称呢?例如,。 问题答案: 你可以提供一个到。工厂将负责创建线程,并将能够为其命名。 引用Javadoc: 创建新线程 使用创建新线程。如果没有另外指定,

  • 主要内容:1 如何获取线程名称,2 获取线程名称的例子1 如何获取线程名称 Thread类提供了更改和获取线程名称的方法。默认情况下,每个线程都有一个名称,即thread-0,thread-1等。通过使用setName()方法,我们可以更改线程的名称。setName()和getName()方法的语法如下: public String getName():用于返回线程的名称。 public void setName(String name):用于更改线

  • 每个人我对使用线程池有一个误解。实际结果与该类的API描述不同。当我在线程池中使用时,它不重用线程,线程池等待构造函数中设置的KeepAliveTime,然后杀死这个线程并创建一个新线程。当我将KeepAliveTime设置为较小值时,比如1秒或更短,它会删除一个线程并重新创建它,但如果我设置一分钟,则不会创建新线程,因为不允许创建,队列已经满,所以所有任务都会被拒绝,但KeepAliveTime

  • 主要内容:1 什么是Java 线程池,2 Java 线程池的优势,3 Java 线程池的应用场景,4 Java 线程池的例子1 什么是Java 线程池 Java线程池 表示一组正在等待作业并多次重复使用的工作线程。 如果是线程池,则会创建一组固定大小的线程。服务提供商从线程池中拉出一个线程并为其分配作业。作业完成后,线程再次包含在线程池中。 2 Java 线程池的优势 由于无需创建新线程,因此拥有更好的性能,可以节省时间。 3 Java 线程池的应用场景 在用户请求Servlet和JSP时,其中

  • 问题内容: 我有一个用C / C++编写的多线程Linux应用程序。我为线程选择了名称。为了帮助调试,我希望这些名称在GDB,“顶部”等中可见。这可能吗?如果可以,怎么办? (有很多[原因可以知道线程名称。现在我想知道哪个线程占用了50%的CPU(由“ top”报告)。在调试时,我经常需要切换到其他线程-目前,我必须做“ ”,然后浏览回溯输出的页面以找到正确的线程。 该视窗解决方案就在这里 ; 什

  • 如何从线程池中找到60%(或N%)的线程可用性?这背后的逻辑是什么? 父线程使用线程池线程生成多个网址,并等待所有子线程完成。 代码如下所示 父线程 子线程 用于跨线程通信的对象数据 在上述代码中,所需的线程硬编码为: 这种硬编码会导致线程池不足吗?如果线程池中没有可用的线程,会发生什么?如何在托管服务器的线程池中查找可用线程的总数? 谢谢。