课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习计算机编程开发技术,而本文我们就通过案例分析来了解一下,java编程多线程与多进程的优缺点分析。
一、多线程
优点:
无需跨进程边界
程序逻辑和控制方式简单
所有线程可以直接共享内存和变量等
线程方式消耗的总资源比进程方式好
缺点:
每个线程与主程序共用地址空间,受限于2GB地址空间
线程之间的同步和加锁控制比较麻烦
一个线程的崩溃可能影响到整个程序的稳定性
到达一定的线程数程度后,即使再增加CPU也无法提高性能
线程能够提高的总性能有限,而且线程数量较大时,线程本身的调度开销不小
提高多线程程序效率的一般方法:
不要频繁创建,销毁线程,
使用线程池减少线程间同步和通信(为关键)
避免需要频繁共享写的数据
合理安排共享数据结构,避免伪共享(falsesharing)
使用非阻塞数据结构/算法
避免可能产生可伸缩性问题的系统调用(比如mmap)
避免产生大量缺页异常,
尽量使用HugePage可以的话使用用户态轻量级线程代替内核线程
二、多进程
优点:
顺序程序的特点:具有封闭性和可再现性;
程序的并发执行和资源共享。多道程序设计出现后,实现了程序的并发执行和资源共享,提高了系统的效率和系统的资源利用率。
缺点:
操作系统调度切换多个线程要比切换调度进程在速度上快的多。而且进程间内存无法共享,通讯也比较麻烦。
线程之间由于共享进程内存空间,所以交换数据非常方便;在创建或撤消进程时,由于系统都要为之分配和回收资源,导致创建进程撤销进程的系统的开销明显大于创建或撤消线程时的开销。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。