linux(线程池)

目录:

          1.简单介绍内存池和线程池

          2.设计一个线程池

          3.线程安全的单例模式

          4.读者写者模型

          5.自旋锁

----------------------------------------------------------------------------------------------------------------------------

1.简单介绍内存池和线程池

这道理就好比,你每次去找你妈要钱,你找她一次你得跑一次,然后呢你还得找她要一块钱,你妈妈呢还得盘算一下家里的钱够不够,够了给你一块钱,过一会你又想要一块钱,那么你又得跑过去找你妈,那么你妈又要盘算一下家里的钱够不够,后来呢,你觉得来来回回太麻烦了,你今天想要100块钱,你跑过去找你妈要,在未来的1个月你都不在找你妈要钱,你妈盘算之后,给了你100块钱,那100块钱就在你的口袋里,花多少,怎么用由你自己决定。这就是内存池

---------------------------------------------------------------------------------------------------------------------------

如果我们处理一批任务的时,创建一个线程,让我们的线程去处理任务

但是虽然创建线程的成本并不高,但是当我们任务到来的时候,在去创建线程,不就相当于当我需要内存的时候在伸手向OS拿嘛,创建线程也是有成本的,我们可以预先创建出一把线程

 这就好比海底捞,那么不应该是你一进海底捞,那么海底捞就有服务员为你服务嘛,总不能当有客户进海底捞时,我海底捞在临时去请员工,在培训,然后在为你提供服务吧,这肯定不行啊!!

 2.设计一个线程池

可以处理任务的线程池  -----> 已经创建好的线程竞争似的去争取任务

--------------------------------------------------------------------------------------------------------------------------

 如何解决??

类内当中要执行我们线程处理的方法,必须让我们的线程执行静态方法

如果一个类的类内方法被改成静态的那么就没有this指针,它也没办法直接访问类内的非static成员

我们将类内要执行的线程方法改成static,编译也就通过了

 --------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------

 这就是我们的线程池处理任务!!!!!!!!!!!!!!

3.线程安全的单例模式

什么是单例模式:单例模式是一种经典的,常考的、常用的的设计模式

什么是设计模式:IT行业这么火,涌入的人很多,俗话说林子啥鸟都有,大佬和菜鸡们两极分化的越来越严重,为了让菜鸡们不太脱大佬们的后腿,于是大佬们针对一些经典的常见场景,给定了一些对应的解决方案,这个就是设计模式

 一般而言我们的对象被设计成单例模式:

1.语义上只需要一个   

2.该对象内部存在大量的空间,保存了大量的数据,如果允许该对象存在多份,或者允许发生各种拷贝,内存中存在冗余数据

饿汉模式:吃完饭,立刻洗碗,下一顿吃的时候可以立即拿起碗接着吃

懒汉模式:吃完饭,等下一顿要吃了,用到了这个碗在洗碗

懒汉最核心的思想是”延时加载“,从而能够优化服务器启动速度

------------------------------------------------------------------------------------------------------------------------------

我们下面来写写懒汉模式的单例

 

 ------------------------------------------------------------------------------------------------------------------------------

单例本身会在任何场景,任何环境下被调用

GetInstance():被多线程重入,进而导致线程安全的问题

 ----------------------------------------------------------------------------------------------------------------------------

4.读者写者模型

 读者写者模型应用场景:1.对数据,大部分的操作是读取,少量的操作是写入

                                         2.进行数据读取(消费)的一端是否会将数据取走,如果不取走,就可以考虑读者写者模型

 那么我应该怎么创建读写锁呢??

 -------------------------------------------------------------------------------------------------------------------------------

 我们这样就维护了写者和写者之间的互斥,和写者和读者之间的互斥!!!

我们这里的readers也就是临界资源!!!!!!!!!!!!

-----------------------------------------------------------------------------------------------------------------------------

 5.自旋锁

 所谓的自旋锁本质就是就是不断的做循环检测锁的状态!!!!

 线程是如何得知,自己会在临界资源待多长时间呢???线程不知道,程序员知道

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值