发表于: 2019-04-21 22:11:17
1 711
今天完成的事情:
多线程和并发并行
selenium gird
明天计划的事情:
多线程和并发并行
selenium gird
遇到的问题:无
收获:并发和并行的概念:
并发是多个线程在一个cpu上快速的交替使用;
并行是多个线程在多个cpu上同时使用。
我的观点1:
并发和并行概念中的cpu是指cpu上的某一个核。
我的观点2;
使用多线程的意义就是充分利用多核cpu的功能,大幅度提高程序的运行效率。
如果在单核cpu的基础上使用多线程虽然也会提高程序的运行效率,但是提高的不多,为了这点效率而使用多线程是没有太大意义的。
并发:
当多个线程在操作的时候,如果系统只有一个CPU,同一时刻就只有一条线程指令在执行,但是各个线程指令被快速的轮换执行,这就是的宏观上看起来是多个线程在同时执行。但微观上并不是这样,只是将时间分成若干个片段,多个线程交替执行。
如图系统只有1个CPU,线程就要通过竞争得到执行机会。谁得到CPU谁就执行。
并发:
当多个线程在操作的时候,如果系统只有一个CPU,同一时刻就只有一条线程指令在执行,但是各个线程指令被快速的轮换执行,这就是的宏观上看起来是多个线程在同时执行。但微观上并不是这样,只是将时间分成若干个片段,多个线程交替执行。
如图系统只有1个CPU,线程就要通过竞争得到执行机会。谁得到CPU谁就执行。
并行:
如果系统有1个以上的CPU,则系统的线程有可能非并发而是并行。当一个CPU执行一个线程时,另一个CPU也在执行另外的线程,两个线程互不争夺CPU资源,可以同时进行,这就称为并行。
这就是和并发不同之处,同一时刻线程指令都在执行。
高并发:
是指短时间内大量的访问和请求,例如双十一。想系统能够适应高并发状态,则需要全面优化优化,包括,硬件、网络、系统架构、开发语言的选取、数据结构的运用、算法优化、数据库优化……而多线程只是其中解决方法之一。
多线程在高并发问题中起到的作用是使计算机资源在每一时刻能达到最大利用率,不至于浪费计算机资源使其闲置。
通过多线程实现并发/并行:
1.Thread类定义实现了多线程,通过多线程可以实现并发或者并行。
2.在CPU比较繁忙资源不足的时候,操作系统只为一个含有多线程的进程分配仅有的CPU资源,这些线程就会自己争夺时间片。这就是多线程实现并发,线程之间争夺CPU资源获得执行机会。
3.在CPU资源较足的时候,一个进程内的多线程,可以被分配到不同的CPU资源,这就是多线程实现并行。
4.至于多线程实现的究竟是并发还是并行?前面两点提到的说明这是都有可能的。因为多线程可能被分配到一个CPU内核执行,也可能被分配到不同的CPU资源中执行。然而这个过程是操作系统干的,不关我的事。所以我也不确定最后究竟是并发还是并行。
5.不管是并发还是并行,都提高了对CPU资源的利用率,最大限度的利用了CPU资源。
评论