首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >监视RuleBasedCollator的锁?

监视RuleBasedCollator的锁?
EN

Stack Overflow用户
提问于 2016-02-12 21:16:00
回答 1查看 176关注 0票数 1

好的,所以我正在试图找出为什么某些线程代码是瓶颈,看看线程转储,java.text.RuleBasedCollator.compare似乎锁定了一个RuleBasedCollator对象。

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

持有锁的线程:

代码语言:javascript
复制
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)

等待锁定的线程:

代码语言:javascript
复制
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)

任何洞察力都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-16 17:17:54

您没有说明您使用的是哪个版本的Java,但是在Java 8中,RuleBasedCollator中的比较方法是同步的:

代码语言:javascript
复制
public synchronized int compare(String source, String target)

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35372322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档