问题标题本身说明了java中Executors和ExecutorCompletionService类之间的区别是什么?
我是Threading的新手,所以如果有人可以用一段代码来解释,那将会有很大帮助.
我想要两个列表:第一个是整数列表.我认为它是:
List<Integer> ints= Arrays.asList(1,2,3);
Run Code Online (Sandbox Code Playgroud)
它工作正常.
第二个是对象列表.我声明为:
List<Object> objs= Arrays.asList(1,2.13,"three");
Run Code Online (Sandbox Code Playgroud)
但是一旦我写它就会在eclipse中出错.错误是:
Multiple markers at this line
- Type mismatch: cannot convert from List<Object&Comparable<?>&Serializable> to
List<Object>
- Type safety: A generic array of Object&Comparable<?>&Serializable is created for
a varargs parameter
Run Code Online (Sandbox Code Playgroud)
相反,如果我写
List<Object> objs = Arrays.<Object>asList(1,2.13,"three");
Run Code Online (Sandbox Code Playgroud)
它工作正常.
我无法弄清楚原因.
我正在阅读书籍Java Generics and Collections作者:Maurice Naftalin,Philip Wadler,在前两章中,我最终误会了我的头脑.我无法弄清楚答案.
在通话中:
public static <T> void copy(List<? super T> dst, List<? extends T> src) {
for (int i = 0; i < src.size(); i++) {
dst.set(i, src.get(i));
}
}
List<Object> objs = Arrays.<Object>asList(2, 3.14, "four");
List<Integer> ints = Arrays.asList(5, 6);
Collections.copy(objs, ints);
assert objs.toString().equals("[5, 6, four]");
Run Code Online (Sandbox Code Playgroud)
在调用函数'copy'期间:
第一个参数:?= Object
2nd参数:?= Integer
但是T的数据类型是什么?如何基于擦除实现由jvm决定?
书中说:在Collections.copy(obj,ints)行中,类型参数T被认为是Number.允许调用,因为objs的类型为List <Object>,它是List <?的子类型.super Number>(因为Object是超类所需的Number的超类型)而ints的类型为List <Integer>,它是List <?的子类型.extends Number>(因为Integer是Number的子类型,根据extends通配符的要求).
但是当Integer实现Serializable和Comparable时,aprt从扩展Number类和Object类也是Serializable和Comparable的超类型.
那么为什么不将T视为Serializable或Comparable而不是Number,因为Substitution Principle将允许它被采用.
提前致谢.
从最近对亚马逊的采访中,我发现了以下问题.我无法找到解决它的有效方法.
问题原因如下:
给定一个字符串数组,您需要在数组中所有可能的字符串排列中找到字符中运行时间最长的序列.
INPUT:
ab
ba
aac
OUTPUT:
a,3
注意:从输入和输出集中,我认为不会对各个字符串进行排列.
如果有人能提供帮助,真的很感激.谢谢.
PMD 规则集中定义的规则之一是:“避免使用 Volatile”,这解释了“不建议使用修饰符 volatile”。该规则在PMD有争议的规则集下有所提及。
在我的团队中,我们在各种模块上配置了 Sonar,这些模块间接具有 PMD 的规则集,因此任何使用易失性弹出窗口的行为都会被视为严重警告。
问题是我们为什么要使用 volatile?
volatile 关键字用于布尔变量来控制外部会话的状态。该状态可以跨多个线程访问,因此要知道状态是 UP 还是 DOWN,它被维护为布尔易失性变量,以便跨多个线程共享可见性。
我的问题是如何解决这个声纳警告?
一种解决方案是从规则集中删除规则,这是不允许的,因为:首先不建议这样做,因为这些规则构成了 PMD 规则集定义的基本准则,其次我的组织中的 SONAR 服务器是由以下人员使用的中央服务器:所有团队。因此是不允许的。
另一种解决方案是通过使用某些注释来忽略声纳警告,这在基本规则集上同样不推荐。
谁能建议我们如何在代码中修复此声纳警告?
提前致谢。
Vertx和Spring都可用于构建整个REST应用程序,其中包括指标计算,JMX etx监控等许多功能.
a)Spring Boot和Vertx有什么区别?
b)我偶然发现了一篇文章:http://keaplogik.blogspot.in/2015/11/spring-boot-vertx-microservice-tech.html.
它描述了一个混合了vertx和Spring Boot的技术堆栈,但对两者都不熟悉,无法弄清楚所提到的链接中的用法.
我目前正在开发一个REST应用程序项目,所以我想在潜入之前选择正确的堆栈.提前感谢.
java ×5
collections ×2
generics ×2
algorithm ×1
architecture ×1
arrays ×1
concurrency ×1
covariance ×1
jvm ×1
permutation ×1
pmd ×1
rest ×1
sonarqube ×1
spring-boot ×1
string ×1
vertx3 ×1
volatile ×1