在我的java程序中,我已经停留了几行,这需要花费太多时间(大约20秒),这对我来说似乎很奇怪.
这是线
Map<URL, Integer> res2 = new HashMap<>();
for (URL url : res) {
res2.put(url, null);
}
Run Code Online (Sandbox Code Playgroud)
哪个res定义如下:
List<URL> res = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
在我的程序中,res.size()〜= 1500
你知道我的问题可能来自哪里吗?
谢谢 !
我正在使用Java 8.
我已经苦苦挣扎了几天才能理解与字符串比较相关的错误.看看这个测试.两个字符串是不同的("i"不是同一个,而不是另一个的大写/小写版本).
我希望这个测试能够通过.第一个断言成功但第二个断言失败(由于某种原因,compareIgnoreCase返回0)
知道发生了什么事吗?
谢谢
String str1 = "v?rus";
String str2 = "virus";
Assert.assertNotEquals(0, str1.compareTo(str2));
Assert.assertNotEquals(0, str1.compareToIgnoreCase(str2));
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个异步ProducerConsumerCollection,为此,我正在使用此msdn页面(http://msdn.microsoft.com/zh-cn/library/hh873173.aspx(页面底部))。
我现在正在尝试添加超时,这是我的工作:
public async Task<T> TakeWithTimeout(int timeout)
{
Task<T> takeTask = this.Take();
if (timeout <= 0 || takeTask == await Task.WhenAny(this.tasks.Take(), Task.Delay(timeout)))
{
return await takeTask;
}
else
{
// Timeout
return default(T);
}
}
}
Run Code Online (Sandbox Code Playgroud)
此代码的问题在于,在超时的情况下,它不会取消Take()方法创建的任务。
由于此任务是由TaskCompletionSource“创建”的,因此我不能给它一个CancellationToken吗?
因此,如何继续取消它并正确实现此Take with timeout?
谢谢 :)