草庐IT

concurrent-collections

全部标签

java - 为什么菱形运算符不适用于 Java 7 中的 java.util.Collections 方法?

在Java1.7.0_55中,如果我写这个字段声明,我会得到一个编译错误(“不兼容的类型”):privatefinalMapmyMap=Collections.synchronizedMap(newHashMap());如果我将其更改为:privatefinalMapmyMap=Collections.synchronizedMap(newHashMap());它编译得很好。(我在这里以synchronizedMap为例,但对于其他Collections方法,unmodifiable*、synchronized*等也是如此)但为什么钻石运算符没有像我在这里预期的那样工作?由于Colle

java - Maven clean 命令 : java. util.Collections.UnmodifiableRandomAccessList 到 java.util.ArrayList 类型的属性

执行cleanmaven命令时,出现如下错误:Failedtoexecutegoalorg.codehaus.mojo:findbugs-maven-plugin:3.0.0:findbugs(findbugs)onUnabletoparseconfigurationofmojoorg.codehaus.mojo:findbugs-maven-plugin:3.0.0:findbugsforparameterpluginArtifacts:Cannotassignconfigurationentry'pluginArtifacts'withvalue'${plugin.artifact

java - 为什么不更常用 Collections.checkedMap 和 friend ?

我最近偶然发现了Collection.checkedMap的Javadoc用于创建标准集合类型的动态类型安全View的函数族。考虑到它们在诊断相对常见的程序员错误的集合之上添加了另一层安全性,我认为它们会更受欢迎。但是,出于某种原因,在我参与过的所有大型Java项目中,我从未见过它们被使用过一次。我的问题是:Java程序员不更频繁地使用这些已检查的包装器是否有特殊原因?或者只是缺乏利益/缺乏对它们存在的了解?编辑:为了澄清我的问题,集合的通用版本仍然包含类型不安全的函数。Map的containsKey,containsValue,remove,和get所有操作Object,例如。我的主

java - Collections.sort() 和通过添加到 TreeSet 中获取排序集合之间的区别?

Setts=newTreeSet();for(Students:studentInfo){ts.add(s);}System.out.println(ts);为了对一组学生对象进行排序,我在我的一个案例block中编写了上面的代码片段。我的问题是:使用这种方法和使用Collections.sort();方法有什么区别。 最佳答案 不同之处在于,TreeSet让您始终对数据进行排序,而Collections.sort()方法会在您调用上的方法时对数据进行排序设置。Collections.sort()的时间复杂度是O(n*log(n))

java - Collection <?扩展 T> 与集合 <T>

在尝试理解SpringMVC中的概念之后,我遇到了表达式Collection我以前从未见过。我试图自己弄清楚,但我发现使用Collection没有区别。和Collection.我猜它只允许Book的扩展,但它也允许Book。所以从头开始。我试过使用谷歌,但自从?是谷歌中的通配符,它​​几乎不可能搜索到。我已经在stackoverflow上搜索了答案,但是关于这个的所有问题(例如List和Javasyntax)都已经假定知道Collection.下面是最初引起我兴趣的代码:importjava.util.ArrayList;importjava.util.Collection;publi

Java中Collections.sort()方法详解

1.介绍Collections.sort()方法的参数为一个List集合,用于给集合进行排序。Collections.sort()内部进行了方法重载,可以只传入一个List集合参数,也可以传入一个List集合参数和一个Comparator接口对象并实现其中的compare方法2.Comparator接口下的compare方法升序排列publicstaticvoidmain(String[]args){Integer[]nums=newInteger[]{3,7,9,2,1};Arrays.sort(nums,newComparatorInteger>(){@Overridepublicintc

c++ - C# Collection<T> 的 C++ 等价物是什么?如何使用它?

我需要在C++中存储动态创建的某个基本类型的对象的列表/集合/数组(我是C++的新手)。在C#中我会使用泛型集合,我在C++中使用什么?我知道我可以使用数组:SomeBase*_anArrayOfBase=newSomeBase[max];但是我没有得到任何“免费”的东西-换句话说,我不能迭代它,它不会自动扩展等等。那么还有哪些选择呢?谢谢 最佳答案 有std::vector这是一个数组的包装器,但它可以扩展并自动执行。但是,这是一个非常昂贵的操作,所以如果您要进行大量插入或删除操作,请不要使用vector。(可以使用reserve

c++ - 为什么我可以选择*不*在运行中调用 Concurrency::agent::done?

这是在MicrosoftC++并发API的上下文中。有一个名为agent的类(在Concurrency命名空间下),它基本上是一个状态机,您可以派生并实现纯虚拟agent::run.现在,您有责任调用agent::start,这会将其置于可运行状态。然后调用agent::wait*或其任何变体来实际执行agent::run方法。但为什么我们必须在正文中调用agent::done?我的意思是,显而易见的答案是agent::wait*将等到发出完成信号或超时已过,但是...设计师的意图是什么?为什么不让代理在agent::run返回时进入完成状态?这就是我想知道的。为什么我可以选择不调用d

c++ - 为什么执行者不在 Concurrency TS 和 std::future 接口(interface)中了?

std::future::then的接口(interface)在论文中N3784包含一个重载版本,该版本接受一个执行程序(在N3562中有更多描述)作为参数。所以如果你想更多地控制回调在哪个线程上执行,你可以这样做。但是这里的官方文档介绍了并发TS中的所有功能http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0159r0.html#futures.unique_future不包括.then()的重载并且根本不提及执行程序。它说Whentheobject'ssharedstateisready,thecontinuation

c++ - tbb::concurrent_unordered_map::unsafe_erase 是否会使任何现有的迭代器失效?

我看到tbb::concurrent_unordered_map与std::unordered_map非常接近,同时对于并发是安全的。我也知道unsafe_erase对于insert等不是并发安全的。迭代器文档还声明任何现有的迭代器对于insert仍然有效,查找等问题是,unsafe_erase是否会使除被要求删除的迭代器之外的任何其他迭代器失效?std::unordered_map和std::map当然有这种行为,但它没有在任何地方的concurrent_unordered_map文档中指定。 最佳答案 tbb::unsafe_e