我正在使用Eclipse插件基础架构扩展Eclipse,我遇到了一个问题,我无法弄清楚如何解决这个问题:
我有一个有热键的命令.我还有一个编辑器,需要从Eclipse中窃取密钥绑定(禁用IBindingService中的密钥过滤器).但是,这个命令足够"重要",因此热键仍然需要工作.目前,在该特定编辑器中,在我正在侦听键事件的部分中,我检查该命令的默认键绑定是什么,并在检测到它时手动启动它.显而易见的问题是,如果更改了命令的键绑定,这仍然只在该编辑器中使用默认绑定.有没有什么方法可以轻松访问特定命令的键绑定,以便我可以检查它而不是简单的默认命令?
我意识到这个解决方案不能在不同的编辑器之间移植,但这是我唯一需要担心的编辑器,所以我真的不介意特别设计这个.
我在Java中使用Collections.synchronizedCollection来保护我知道很多线程同时访问的Set.Java API警告:
"当迭代它时,用户必须手动同步返回的集合:
Collection c = Collections.synchronizedCollection(myCollection);
...
synchronized(c) {
Iterator i = c.iterator(); // Must be in the synchronized block
while (i.hasNext())
foo(i.next());
}
Run Code Online (Sandbox Code Playgroud)
"
如果我使用c.contains(obj),那是否是线程安全的?在内部,显然,这是迭代Collection并查看其中的任何对象是否等于obj.我的直觉是假设这可能是同步的(如果不是这似乎是一个重大的失败),但考虑到先前的同步痛苦,仔细检查似乎是明智的,谷歌搜索这方面的答案还没有转变任何东西.