多线程
大超Bing
这个作者很懒,什么都没留下…
展开
-
并发与多线程(五) --- ThreadLocal
文章目录前言一、引用类型二、使用步骤1.引入库2.读入数据总结前言“水能载舟,亦能覆舟。” 用这句话来形容ThreadLocal 最贴切不过。ThreadLocal 初衷是在线程并发时,解决变量共享问题,但由于过度设计,比如弱引用和哈希碰撞,导致理解难度大、使用成本高,反而成为故障高发点,容易出现内存泄露、脏数据、共享对象更新等问题。单从ThreadLocal 的命名看人们会认为只要用它对了,包治变量共享问题,然而并不是。下面我们以内存模型、弱引用、哈希算法为铺垫,然后从CS 真人游戏的代码示例入手,原创 2020-11-08 15:05:22 · 544 阅读 · 0 评论 -
并发与多线程(四) --- 线程池
文章目录一、线程池的好处1.1 线程池的作用:1.2 线程是如何创建的二、使用步骤1.引入库2.读入数据总结一、线程池的好处线程使应用能够更加充分合理地协调利用CPU、内存、网络、I/O等系统资源。线程的创建需要开辟虚拟机栈、本机方法栈、程序计数器等线程私有的内存空间。在线程销毁时需要回收这些资源。 频繁地创建和销毁线程会浪费大量的系统资源,增加并发编程风险。另外,在服务器负载过大的时候,如何让新的线程等待或者友好地拒绝服务?这些都是线程自身无法解决的。 所以需要通过线程池协调多个线程,并实现类似主次原创 2020-11-02 20:02:38 · 608 阅读 · 0 评论 -
并发与多线程(三) --- 线程同步
文章目录一、线程同步是什么?二、Volatile三、信号量同步总结一、线程同步是什么?资源共享的两个原因是资源紧缺和共建需求。线程共享CPU 是从资源紧缺的维度来考虑的,而多线程共享同一变量,通常是从共建需求的维度来考虑的。在多个线程对同一变量进行写操作时,如果操作没有原子性,就可能产生脏数据。 所谓原子性是指不可分割的一系列操作指令,在执行完毕前不会被任何其他操作中断,要么全部执行,要么全部不执行。如果每个线程的修改都是原子操作,就不存在线程同步问题。有些看似非常简单的操作其实不具备具备原子性..原创 2020-10-25 15:25:08 · 262 阅读 · 0 评论 -
并发与多线程(二) --- 锁
文章目录前言用并发包中的锁类总结前言什么是锁在计算机信息世界里,单机单线程时代没有锁的概念. 自从出现了资源竞争,人们才意识到需要对部分场景的执行现场加锁,昭告天下,表明自己的"短暂" 拥有(其实对于任何有形或无形的东西,拥有都不可能是永恒的). 计算机的锁也是开始的悲观锁,发展到后来的乐观锁,偏向锁,分段锁等. 锁主要提供了两种特性: 互斥性 和 不可见性 . 因为锁的存在,某些操作对外界来说是黑箱进行的,只有锁的持有者才知道对变量进行了什么修改.Java 中常用锁实现的方式有两种:原创 2020-10-24 10:06:24 · 114 阅读 · 0 评论 -
并发与多线程(一) --- 线程安全
文章目录前言一、并发和并行二、线程安全总结前言目前CPU 的运算速度已经达到百亿次/秒 ,甚至更高的量级,家用电脑维持操作系统正常运行的进程也会有数十个,线程更是数以百计, 所以,在现实场景中,为了提高生产效率和高效的完成任务,处处均采用多线程和并发的运作方式.一、并发和并行并发(Concurrency) 是指在某个时间段内,多任务交替处理的能力 . 所谓不患寡而患不均,每个CPU不可能只顾着执行某个进程,让其他线程一直处于等待状态, 所以CPU把可执行时间均匀分成若干份,每个进程执行一段时间后,记原创 2020-10-22 19:58:39 · 253 阅读 · 0 评论