我正在阅读"真正不耐烦的Java SE 8"这本书,在第一章我遇到了下一个练习题:
Arrays.sort方法中的比较器代码是否与调用sort或不同的线程在同一个线程中调用?
我已经在javadoc中搜索了Arrays.sort重载,它接受了一个Comparator参数,但它没有指定任何关于线程的内容.我认为出于性能原因,代码可以在另一个线程中执行,但这只是猜测.
我有以下代码
static void Main(string[] args)
{
string url = "http://www.google.com";
Console.WriteLine(GetUrl(url).Result); // throws TaskCanceledException
Console.WriteLine(GetUrl2(url).Result);
}
public static Task<string> GetUrl(string url)
{
using (var client = new HttpClient())
{
return client.GetStringAsync(url);
}
}
public static Task<string> GetUrl2(string url)
{
using (var client = new WebClient())
{
return client.DownloadStringTaskAsync(url);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试获取url的字符串,问题是GetUrl方法(使用HttpClient的GetStringAsync)抛出TaskCacelledException,但GetUrl2方法(使用WebClient的DownloadStringTaskAsync)正确运行.这是由于using statement?我错过了什么?
编辑.在这个例子中,我在任务上调用Result,因为这是一个控制台应用程序,我知道最好等待事件处理程序中的结果.
我有一个包含整数的数组Y,例如[1 3 2 0 9 8 2],我想选择除了第一个和最后一个[3,2,0,9,8,2]之外的所有元素,以便在进一步的操作中使用它们.这是我目前的做法:
Y.Where((i, x) => i != 0 && i != Y.Length - 1)
Run Code Online (Sandbox Code Playgroud)
还有更好的方法吗?