
线程
羯殇
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Volatile内存屏障
内存屏障四种类型:1.1、Load指令和Store指令Load指令(读屏障):将内存的数据拷贝到处理器缓存Store指令(写屏障):让当前线程写入缓存的数据可以被其他线程看见1.2、LoadLoad Barriers排队,当第一个读屏障指令读取数据完毕之后,后一个读屏障指令才能够进行加载读取(禁止读和读的重排序)1.3、StoreStore Barriers当A写屏障指令写完之后且保证A的的写入可以被其他处理器看见,再进行B的写入操作(禁止写与写的重排序)1.4、LoadStore Ba原创 2022-04-24 22:47:35 · 2614 阅读 · 0 评论 -
valatile
valatile:保证变量的内存可见性禁止指令重排序内存可见性:当A线程改变某个变量的值时,其他线程读取时是最新的值总线嗅探机制:基于主内存的处理器,当变量的地址值被改变时,重新从主内存读取内存地址到线程中,保证在线程中的变量可见性问题:虽然valatile保证了线程变量的可见性,但在修改时依然是线程不安全的(读->写)。可以加锁或者使用原子类处理(AtomicInteger)指令重排序:步骤:例如:B需要使用A的值,那么B一定排在A后面。基于内存可见性,让线程中的变量也会基于这一点原创 2022-03-28 00:57:49 · 335 阅读 · 0 评论 -
线程-线程池
线程池介绍:开辟一片内存空间管理尚未死亡的线程,通过线程池进行线程调度线程池类型:固定尺寸的线程池:固定了线程数量,加入线程数超过最大线程池最大线程数时,进入该线程池需要等待单任务线程池:线程池只持有一个线程,后续线程进入线程池需要等待,使用无界队列进行管理ps:无界队列:底层采用CAS自选进行队列管理,系统资源耗尽前没有空间上限可变尺寸连接池:线程池尺寸不定,没有大小限制延迟连接池:可以使线程进行延迟启动或者定期启动单任务延迟连接池:单线程延迟启动自定义线程池:自定义线程原创 2022-02-27 21:03:50 · 161 阅读 · 0 评论 -
线程基础篇
线程组成:一个指向当前被执行指令的指令指针:IP寄存器,指向对应线程一个栈:对线程的一个快照存储,记录了所有线程的运行状态,包括调用堆栈,锁池情况等一个寄存器值的集合:定义了一部分描述正在执行线程的处理器状态的值一个私有的数据区:该线程私有的数据线程启动:通过实现 Runnable 接口:由于是实现接口,所以可以继承其他线程,多线程可以共用同一个对象,将cpu代码和对象分开,模型清晰。需要访问当前线程,必须使用Thread.currentThread()方法。通过继承 Thread 类本身原创 2022-02-27 20:40:32 · 142 阅读 · 0 评论