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

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

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

背景

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

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

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

一定要说的进程和线程

进程

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

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

这里写图片描述

线程

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

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

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

这里写图片描述

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

使用多线程的优点

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

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

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

能处理更加复杂的任务

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

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

安全问题

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

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

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

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

性能问题

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

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

总结

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

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



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


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


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

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

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

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

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

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


相关推荐

  • Spring的AOP与动态代理[通俗易懂]

    Spring的AOP与动态代理[通俗易懂]Spring的AOP与动态代理

    2022年4月22日
    47
  • 显示屏如何检测坏点(手机屏幕坏点检测图片)

    文章来源:http://bbs.50bang.com/read.php?tid=23543通过debug检测屏幕颜色显示坏点、低格硬盘等等技巧通过如下方法,可以方便地在手头么有工具特情况下检测LCD显示器的坏点  购买LCD显示器最忌有亮点或暗点,我们可以借助相关的检测软件来辅助查看,但在配电脑时,老板常常不让我们装软件,其实利用Debug中的F命令就可以看得清清楚楚!  为了检测LCD屏…

    2022年4月17日
    235
  • Python 编译器_如何在pe系统里安装软件

    Python 编译器_如何在pe系统里安装软件好久都没更新博客了,最近是真的很忙,每天抽出1小时写博客,有的时候更本没时间,今天写一个解析PE的一个软件,过程和内容很干,干货干货之前有很多人加我要资料和软件,我从来没说过要钱什么的,只要给个关注和点赞,就可以了,需要什么资料,只要我可以给,我会不要一分钱免费给你们资料,欢迎大家来评论博主?点个赞留个关注吧!!资料(百度网盘)提取码:i4ptPE解析软件和源代码包文件提取码:07bhPE解析器软件安装包提取码:r9og激活成功教程版打包软件–打包为安装包先看视频,双击打开

    2022年10月16日
    0
  • redis默认端口为什么是6379_redis 端口

    redis默认端口为什么是6379_redis 端口1、如果开了redis服务,先将服务关闭2、在window上找到redis的安装目录,修改redis.windows.conf文件,在里面将默认端口改为你想要的端口号3、将redis.windows.conf文件直接拖入redis-server.exe,弹出窗口

    2022年9月18日
    0
  • idea 2021.9激活码_最新在线免费激活

    (idea 2021.9激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~S32PGH0SQB-eyJsaWNlb…

    2022年3月26日
    83
  • button实现类似uisegment效果

    button实现类似uisegment效果

    2021年8月21日
    74

发表回复

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

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