Java 实现普罗米修斯时的种族条件

Java 实现普罗米修斯时的种族条件,java,prometheus,Java,Prometheus,我试图在我的应用程序中推动定制promethues度量,我怀疑会有竞争条件。我怎样才能避免比赛状态 @Component public class CustomeCounter { Counter mycounter; public CustomCounter(CollectorRegistry registry) { mycounter = Counter.build().name("test").help("test").register(registry); } public vo

我试图在我的应用程序中推动定制promethues度量,我怀疑会有竞争条件。我怎样才能避免比赛状态

@Component
public class CustomeCounter {

Counter mycounter;

public CustomCounter(CollectorRegistry registry) {
 mycounter = Counter.build().name("test").help("test").register(registry);
}

public void incrementCounter() {
 mycounter.inc();
}
}


@Component
public class Test{

@Resource
private CustomCounter customCounter;

public void testInc() {
customCounter.incrementCounter();
}
}

在我看来,这是一个潜在的比赛条件。如何避免它。

通常,Prometheus客户端库是线程安全的。我在java风格的文档中没有看到这样的保证,但有一些提示:

  • Gauge(我希望计数器)方法是线程安全的 请记住,Gauge上的默认inc()、dec()和set()方法 注意线程安全

  • 创建度量(至少使用生成器)是线程安全的 labels()方法查找或创建相应的标签 时间序列。您还可以考虑将标记的时间序列存储为 实例变量(如果合适)。它是线程安全的,可以 可以多次使用,这有助于提高性能

考虑到您的代码,我不希望出现其他并发性问题