—工欲善其事,必先利其器,欢迎关注我,关注不迷路,我是学利器,一起分享一起成长
初识多线程
一、多线程是什么
进程与线程区分,进程就是系统中正在运行的一个程序,程序一旦运行起来就有一个进程,如window系统中,你打开任务管理器,每个应用都开启了一个进程。而此时的进程又可以开启多个不同的线程来执行。
简单的解释就是,在同一个进程开启了多条不同的执行路径,每条执行路径就是一个线程,多条不同路径同时执行
二、多线程的优势
1、使用多线程可以提高执行效率
2、快速响应给客户,提高客户体验度
3、每个线程之间互不影响
三、多线程的应用场景
1、使用多线程实现异步记录日志,如登录日志
2、使用多线程实现异步发送短信,邮件等信息
3、使用多线程处理一个比较耗时的业务
四、是否多线程开越多越好
如果你的项目比较小,可以采用多线程异步实现处理,提高处理效率,但是如果你的项目涉及到高并发的情况,如果频繁的创建线程,同时也会被CPU分配调度,不断的切换上下文,对服务器性能影响会比较大,所以建议如果在高并发的情况下可以采用消息中间件(MQ)ActiveMQ,RabbitMQ,ROCKETMQ,Kafka等来替换。
那么可能有些人对什么是上下文切换不是很理解,对于单核的CPU来说,CPU同一个时刻只能运行一个线程,当正在运行的线程切换到另一个线程时,我们就把这个过程理解为CPU上下文切换。
如果你的电脑是多核处理器,比方你的电脑配置是I7 7600U 2核 4线程(如我的电脑这个配置表示该电脑同一个时刻可以寄开启4个线程同时运行,服务器支持的线程数越高可以减少CPU上下文切换,从而提高效率,
所以并非多线程开启越多越好,应该根据自己服务器的配置情况,开启线程,否则不但没有提高效率反而影响整个程序的运行效率,得不偿失啊!
那么如何查看自己的服务器核数和线程数呢?网上可能有些让你看配置可能有些方法是错的
window系统查看核数,线程数
win+R,输入命令wmic,再输入cpu get *,找到numberofcores和numberoflogicalprocessors
D:\xxx>wmic
wmic:root\cli>cpu get *
或者
wmic:root\cli>cpu get numberofcores
NumberOfCores
2
wmic:root\cli>cpu get numberoflogicalprocessors
NumberOfLogicalProcessors
4
Linux查看核数和线程数
查看CPU个数
[root@iZbp178arq0qlx650bdn5pZ ~]# grep 'physical id' /proc/cpuinfo | sort -u | wc -l
1
查看CPU核数
[root@iZbp178arq0qlx650bdn5pZ ~]# grep 'core id' /proc/cpuinfo | sort -u | wc -l
4
查看CPU线程数
[root@iZbp178arq0qlx650bdn5pZ ~]# grep 'processor' /proc/cpuinfo | sort -u | wc -l
8