并发是指两个任务在不同的线程上并行运行。但是,异步方法并行运行,但在同一个线程上。这是如何实现的?另外,并行性怎么样?
这3个概念有什么区别?
并发和并行实际上与您正确推测的原理相同,两者都与同时执行的任务有关,尽管我想说并行任务应该是真正的多任务处理,“同时”执行,而并发可能意味着任务正在共享执行线程,同时看起来仍然是并行执行。
异步方法与前两个概念没有直接关系,异步用于呈现并发或并行任务的印象,但实际上,异步方法调用通常用于需要远离当前应用程序执行工作的进程,而我们不这样做不想等待并阻止我们的应用程序等待响应。
例如,从数据库获取数据可能需要时间,但我们不想阻止 UI 等待数据。异步调用采用回调引用,并在向远程系统发出请求后立即将执行返回到您的代码。当远程系统执行所需的任何处理时,您的 UI 可以继续响应用户,一旦将数据返回到您的回调方法,那么该方法就可以根据需要更新 UI(或切换更新)。
从用户的角度来看,这看起来像是多任务处理,但事实可能并非如此。
EDIT
可能值得补充的是,在许多实现中,异步方法调用将导致线程启动,但这不是必需的,它实际上取决于正在执行的操作以及如何将响应通知回系统。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)