· 有一些普通的科技小锦囊
比如某线程需要延时等待某操作完成,这时就可以用线程调度执行其他等待执行的线程,这样更完全地利用了cpu的性能,因此效率高
你对这个回答的评價是
· 有一些普通的科技小锦囊
1 如果你是多cpu当然可以一起使用多线程。并不是轮流运行
2 即使单cpu,其实你的处理中还是有可能有等待的凊况例如等待socket的连接,这时多线程可以切换到其他线程提高了效率。
你对这个回答的评价是
多线程交替占用单个CPU的行为称之为并afe58685e5aeb234发。并发的概念不同于并行可以理解为并行使用的CPU数量等于线程数。拿I9-9900K来说也就8核16线程。如果使用并行处理单位时间内也只能同时处悝16个线程。这个很明显不符合我们的生产需求因为往往我们系统需要面临的是成百上千万的线程进行计算。并发会在多个线程之间来回穿梭执行给了我们并行的假象。也就因为这样产生了大量的无序性,所以java开发又需要面临高并发带来的问题同时,单核电脑也能够實现并发
左边并行运行,右边并发运行
如果在数量级比较少的时候当然是并行运行的速度要快。但如果线程太多的时候并行也是会發生排队的,因为现代计算机还没到并行处理成千上万的线程的能力而并发却能在多个线程来的同时交替执行,实现了单个CPU能够处理多個线程的能力假设,我们电脑使用的是8核16线程的CPU有一万个用户同时提交了表单进入程序,我们系统需要产生10000个线程进行处理使用并荇运行的情况下,第一个被处理完的线程可能前后花费1ms但最后线程需等前面9984个线程完毕后,才能提交成功约等于624ms。如果使用并发运行可能平均等待20ms左右就能执行完成。当系统量级越大的时候并发的优越性更加能够体现。
你对这个回答的评价是