gpt4 book ai didi

java - RuleBasedCollat​​or 中的监控锁?

转载 作者:太空宇宙 更新时间:2023-11-04 12:56:10 25 4
gpt4 key购买 nike

好的,所以我试图找出为什么某些线程代码出现瓶颈,并查看线程转储,似乎 java.text.RuleBasedCollat​​or.compare 正在锁定 RuleBasedCollat​​or 对象。

但是,我查看that code ,并且没有可以在代码上设置此监视器锁定的同步代码部分。据我所知,Java中获取锁的唯一方法是在一段同步代码中。下面我包含了 1) 拥有锁的线程和 2) 正在等待锁的线程的堆栈转储。如果您需要更多信息,请告诉我。

保持锁的线程:

Owns Monitor Lock on 0xc6f85460
Java Stack
at sun.text.normalizer.ReplaceableUCharacterIterator.(ReplaceableUCharacterIterator.java:44)
at sun.text.normalizer.UCharacterIterator.getInstance(UCharacterIterator.java:66)
at sun.text.normalizer.NormalizerBase.setText(NormalizerBase.java:985)
at java.text.CollationElementIterator.setText(CollationElementIterator.java:480)
at java.text.RuleBasedCollator.compare(RuleBasedCollator.java:353)
- locked [0xc6f85460] (a java.text.RuleBasedCollator)
at java.text.Collator.compare(Collator.java:310)
at java.util.Arrays.binarySearch0(Arrays.java:2105)
at java.util.Arrays.binarySearch(Arrays.java:2043)
at org.apache.axis.utils.JavaUtils.isJavaKeyword(JavaUtils.java:740)

线程等待锁定:

Waiting for Monitor Lock on 0xc6f85460
Java Stack
at java.text.RuleBasedCollator.compare(RuleBasedCollator.java:343)
- waiting to lock [0xc6f85460] (a java.text.RuleBasedCollator)
at java.text.Collator.compare(Collator.java:310)
at java.util.Arrays.binarySearch0(Arrays.java:2105)
at java.util.Arrays.binarySearch(Arrays.java:2043)
at org.apache.axis.utils.JavaUtils.isJavaKeyword(JavaUtils.java:740)

如有任何见解,我们将不胜感激。

最佳答案

你没有说你使用的是哪个版本的Java,但是在Java 8中,RuleBasedCollat​​or中的compare方法是同步的:

public synchronized int compare(String source, String target)

这可以解释您所看到的线程转储。

关于java - RuleBasedCollat​​or 中的监控锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35372322/

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