我有Queue
我要将其转换为long[]
并将其传递给我的计算百分位数的方法。
private final ConcurrentLinkedQueue<Long> holder = new ConcurrentLinkedQueue<>();
我正在使用ConcurrentLinkedQueue
,因为我正在插入从多线程应用程序到我上面的holder
队列的毫秒级延迟,所以我想要线程安全。
现在我的问题是如何将holder
队列转换为long[]
长数组,以便将其传递给我的下方法?有没有办法做到这一点?
public static long[] percentiles(long[] latencies, double... percentiles) {
Arrays.sort(latencies, 0, latencies.length);
long[] values = new long[percentiles.length];
for (int i = 0; i < percentiles.length; i++) {
int index = (int) (percentiles[i] * latencies.length);
values[i] = latencies[index];
}
return values;
}
答案 0 :(得分:0)
看起来ConcurrentLinkedQueue#toArray(T[] a)会让你获得90%的胜利:
Long[] longs = holder.toArray(new Long[0]);
将Long[]
转换为long[]
作为练习留给学生。 ; - )