【一】并发编程故事背景介绍

背景每一个故事都有一个开始,那么并发编程的故事的开始是什么呢?由于人类的科学技术的发展,需要处理的任务越来越复杂也多样化,导致之前单核的处理器无法处理这些复杂的任务,于是处理器从之前的单核处理器逐渐发展到多核处理器【其实这里也有一个摩尔定律】。多核处理器很好的解决了多任务和任务复杂度的问题,那么我们就应该学习一下多任务处理,这里指的是多线程,Java语言在创建时就支持多线程,很高明!

大家好,又见面了,我是全栈君。

背景

每一个故事都有一个开始,那么并发编程的故事的开始是什么呢?

由于人类的科学技术的发展,需要处理的任务越来越复杂也多样化,导致之前单核的处理器无法处理这些复杂的任务,于是处理器从之前的单核处理器逐渐发展到多核处理器【其实这里也有一个摩尔定律】。

多核处理器很好的解决了多任务和任务复杂度的问题,那么我们就应该学习一下多任务处理,这里指的是多线程,Java语言在创建时就支持多线程,很高明!在多线程的基础上我们来看并发编程!

一定要说的进程和线程

进程

进程是操作系统结构的基础,是一次程序的执行,是一个程序及其数据在处理机上顺序执行时所发生的。它是系统进行资源分配和调度的一个独立单位。【根本不知道在说什么】

说白了,进行就是一个运行的程序。比如运行一个QQ、微信,就相当于执行一个进行,在window下,任务管理器中我们可以看到有一个进程的标识!如下图:

这里写图片描述

线程

线程是什么呢?首先线程肯定是要依赖进程,有了进程才有线程!

线程可以理解为在进程中独立运行的子任务,比如QQ中你可以和多个好友聊天(每个聊天窗口相当于启动了一个线程),在聊天的过程中也可以发图片,上传文件等,每个操作都是启动一个新的线程去执行。

线程之间可以共享进程的一些资源,使用多线程在执行多任务多任务的环境中效率会更高!

这里写图片描述

注意:
– 进程是相对于操作系统的;
– 线程是相对于进程的;
– 一定要记住在某些场景下多线程不一定比单线程执行快!

使用多线程的优点

能发挥多核心处理器的强大威力

线程是处理器调度的基本单位,如果一个程序只有一个线程,确运行在双核处理器上,那么处理的利用率只有1/2 ,也就是50%。如果单线程程序运行在核心越多的处理器上,那么利用率越低。

多线程可以提高处理器资源的利用率进而提升系统的吞吐量。

能处理更加复杂的任务

使用多线程,将复杂的异步的工作流分解为一组简单并且同步的工作流,每个工作流在一个单独的线程中运行,并在特定的同步位置进行交互。

使用多线程的缺点【问题】

安全问题

使用多线程会引起线程安全问题,导致某些操作的结果和预期不一致。

在防止出现线程安全的时候,使用同步方法,可能会造成 线程 死锁,影响程序运行。

多线程在出现问题的时候,还不容易排查,不容易复现!

这里提示如果在开发中,使用多线程一定要谨慎和小心。

性能问题

多线程在进行线程上下文切换的时候使用系统资源,如果线程数量太多,会导致系统资源不足,导致系统性能下降。

并且多线程也受到系统资源的限制,会使线程造成阻塞,可能导致多线程的执行效果还不如单线程。

总结

一定要综合起来看多线程,要有全局的视角!

就如看到的一句话,在你写这段代码的时候,就知道会有多少访问量,并发是多少,如果能做到这一点,那就真的厉害了。



如果您觉得这篇博文对你有帮助,请点个赞,谢谢!


如果帅气(美丽)、睿智(聪颖),和我一样简单善良的你看到本篇博文中存在问题,请指出,我虚心接受你让我成长的批评,谢谢阅读!
祝你今天开心愉快!


欢迎访问我的csdn博客,我们一同成长!

“不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!”

博客首页:http://blog.csdn.net/u010648555

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/121130.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python有序列表_python有序列表以及方法的介绍(代码)

    python有序列表_python有序列表以及方法的介绍(代码)本篇文章给大家带来的内容是关于python有序列表以及方法的介绍(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。有序列表以及有序列表的函数和方法(list)list=[‘hello’,’wrold’]#len获取查询长度length=len(list)#append添加一个新元素,到list的末尾list.append(‘admin’)#pop删除指定位…

    2022年6月16日
  • Python和sendfile[通俗易懂]

    Python和sendfile[通俗易懂]sendfile(2)isaUNIXsystemcallwhichprovidesa“zero-copy”wayofcopyingdatafromonefiledescriptor(afile)toanother(asocket).Becausethiscopyingisdoneentirelywithinthekernel,sen…

    2022年5月3日
  • 基于matlab的直流电机仿真,基于MATLAB的无刷直流电机控制系统仿真

    基于MATLAB的无刷直流电机控制系统仿真(论文10000字)摘要:本论文主要关注无刷直流电机的调速控制系统,学习此电机的运行原理和PWM控制方法,简述了调速的概念、控制原理与方法、现状,并且学习并使用无刷直流电机的换相控制方法,并对无刷直流电动机调速系统进行设计。并通过Simulink来建模仿真和实验模拟得知电机的运行情况,并且根据仿真结果对无刷直流电机开始学习分析,从而达到对无刷直流电机的转速…

    2022年4月11日
  • 三款专业的ocr文字识别工具[通俗易懂]

    三款专业的ocr文字识别工具[通俗易懂]ocr文字识别是办公软件中不可缺少的工具,那么哪款好用呢?​这里为大家整理了三款比较好用的工具,不仅可以进行文字识别,有的还具有在线翻译的功能,简直不要太好用啦!第一款:TextScanner激活

    2022年7月2日
  • java中的maven_maven创建web项目

    java中的maven_maven创建web项目一、前言早就知道maven在java项目的管理方面名声显赫,于是就想着学习掌握之,于是查阅了大量文档。发现这些文档的作者都是java的大腕,大多都是站在掌握了一定maven基础的角度上进行介绍,让我这初学者看的云里雾里不知所云。于是又去查看maven的官方网站,总算是有所了解,但一旦动手实际操作却又雾里看花。唉,没办法,就只有一遍一遍的动手尝试,经过种种磨难总算是有一点眉…

    2022年9月8日
  • SQL SERVER 的压缩功能

    SQL SERVER 的压缩功能请关注个人小站:http://sqlhis.com/SQLSERVER2008及以上提供数据库表压缩功能1.压缩分类和比率压缩分为行(ROW)压缩和页(PAGE)压缩,页压缩的压缩比率更

    2022年8月1日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号