gpt4 book ai didi

java - 检测调用者并识别线程

转载 作者:行者123 更新时间:2023-12-01 11:03:03 24 4
gpt4 key购买 nike

所以我有一个类,我需要知道它是否是由线程实例化的。现在我知道这可以通过使用 StackTraceElement 并遍历当前堆栈跟踪来实现,但是我只需要知道该类是否是由正在运行的线程而不是父线程调用的。

示例:

我有一个管理整个应用程序的父线程,它控制其他子线程,这些子线程执行分配给它们的任何操作,以及在父线程本身上运行的类。我需要知道实例化类的代码是否在父线程或子线程上运行,或者只是在默认的 main 方法上运行。

应用:

灵 active 。我正在开发的类被设计得非常灵活,因为它既是线程安全的,又可以与不太先进的程序或非多线程程序集成。

最佳答案

修改这些类的构造函数以打印当前线程。将线程详细信息添加到记录器中,然后您可以过滤掉哪些实例不是使用您的main线程创建的。

为了快速说明,我会给你一些 Scala 代码:

这是获取当前线程的方法。

scala> Thread.currentThread
res23: Thread = Thread[main,5,main]

修改类构造函数。

scala> class A{ println(Thread.currentThread) }
defined class A

现在,每次创建实例时,都将其打印到标准输出(或您的情况下的记录器)

scala> new A
Thread[main,5,main]
res24: A = A@5e99b9c

关于java - 检测调用者并识别线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33190628/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com