大家好,又见面了,我是全栈君。
背景
每一个故事都有一个开始,那么并发编程的故事的开始是什么呢?
由于人类的科学技术的发展,需要处理的任务越来越复杂也多样化,导致之前单核的处理器无法处理这些复杂的任务,于是处理器从之前的单核处理器逐渐发展到多核处理器【其实这里也有一个摩尔定律】。
多核处理器很好的解决了多任务和任务复杂度的问题,那么我们就应该学习一下多任务处理,这里指的是多线程,Java语言在创建时就支持多线程,很高明!在多线程的基础上我们来看并发编程!
一定要说的进程和线程
进程
进程是操作系统结构的基础,是一次程序的执行,是一个程序及其数据在处理机上顺序执行时所发生的。它是系统进行资源分配和调度的一个独立单位。【根本不知道在说什么】
说白了,进行就是一个运行的程序。比如运行一个QQ、微信,就相当于执行一个进行,在window下,任务管理器中我们可以看到有一个进程的标识!如下图:
线程
线程是什么呢?首先线程肯定是要依赖进程,有了进程才有线程!
线程可以理解为在进程中独立运行的子任务,比如QQ中你可以和多个好友聊天(每个聊天窗口相当于启动了一个线程),在聊天的过程中也可以发图片,上传文件等,每个操作都是启动一个新的线程去执行。
线程之间可以共享进程的一些资源,使用多线程在执行多任务多任务的环境中效率会更高!
注意:
– 进程是相对于操作系统的;
– 线程是相对于进程的;
– 一定要记住在某些场景下多线程不一定比单线程执行快!
使用多线程的优点
能发挥多核心处理器的强大威力
线程是处理器调度的基本单位,如果一个程序只有一个线程,确运行在双核处理器上,那么处理的利用率只有1/2 ,也就是50%。如果单线程程序运行在核心越多的处理器上,那么利用率越低。
多线程可以提高处理器资源的利用率进而提升系统的吞吐量。
能处理更加复杂的任务
使用多线程,将复杂的异步的工作流分解为一组简单并且同步的工作流,每个工作流在一个单独的线程中运行,并在特定的同步位置进行交互。
使用多线程的缺点【问题】
安全问题
使用多线程会引起线程安全问题,导致某些操作的结果和预期不一致。
在防止出现线程安全的时候,使用同步方法,可能会造成 线程 死锁,影响程序运行。
多线程在出现问题的时候,还不容易排查,不容易复现!
这里提示如果在开发中,使用多线程一定要谨慎和小心。
性能问题
多线程在进行线程上下文切换的时候使用系统资源,如果线程数量太多,会导致系统资源不足,导致系统性能下降。
并且多线程也受到系统资源的限制,会使线程造成阻塞,可能导致多线程的执行效果还不如单线程。
总结
一定要综合起来看多线程,要有全局的视角!
就如看到的一句话,在你写这段代码的时候,就知道会有多少访问量,并发是多少,如果能做到这一点,那就真的厉害了。
如果您觉得这篇博文对你有帮助,请点个赞,谢谢!
如果帅气(美丽)、睿智(聪颖),和我一样简单善良的你看到本篇博文中存在问题,请指出,我虚心接受你让我成长的批评,谢谢阅读!
祝你今天开心愉快!
欢迎访问我的csdn博客,我们一同成长!
“不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!”
博客首页:http://blog.csdn.net/u010648555
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/121130.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...