![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 93
吞吞吐吐大魔王
这个作者很懒,什么都没留下…
展开
-
【多线程】多线程面试常见基础内容
内存地址 V旧的预期值 A即将要更新的目标值 B更新一个变量的时候,只有当变量的预期值 A 和内存地址 V 当中的实际值相同时,才会将内存地址 V 对应的值修改为 B。整个比较并替换的操作是一个原子操作。由于 CAS 这个机制,就给实现线程安全版本的代码提供了一个新的思路,之前是通过加锁来把多个指令打包成一个整体,来实现线程安全。使用 CAS 来实现修改操作,则就能保证线程是安全的。Callable 是一个接口,描述了一个任务,通过重写 call 方法来完成该任务的内容。...原创 2022-08-28 00:55:33 · 937 阅读 · 1 评论 -
【多线程】常见的锁策略
如果有 A、B、C 三个线程,A 线程在获取到锁后,B 紧接着获取锁但失败了,C 最后也获取锁也失败了。当 A 释放锁后,如果按照先来后到的顺序获取锁,即 B 先获取锁,则是一个公平锁。如果不遵循先来后到,B 和 C 都有可能获取锁,则是一个非公平锁,synchronized 既是一个乐观锁,又是一个悲观锁。读写锁就是把读操作和写操作分别加锁,适用于读多写少的场景中,Java 标准库提供了。乐观锁和悲观锁并无高下之分,主要还是看应用场景。synchronized 不是读写锁。原创 2022-08-25 03:17:53 · 886 阅读 · 0 评论 -
【多线程】线程池
线程池(Thread pool)是一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。降低资源消耗通过重复利用自己已创建的线程降低线程创建和销毁造成的消耗。提高响应速度当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。原创 2022-08-23 23:06:39 · 1154 阅读 · 1 评论 -
【多线程】阻塞队列、定时器、线程安全的单例模式的原理及实现
单例模式(Singleton Pattern)是 Java 最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类也只提供一种访问其唯一对象的方式,可以直接访问,不需要实例化该类的对象。单例模式具体的实现有以下两种:饿汉模式(线程安全)原创 2022-08-23 04:38:14 · 900 阅读 · 0 评论 -
【多线程】线程安全问题
我们可以把一段代码想象成一个房间,每个线程就是要进入这个房间的人。如果没有任何机制保证, A 进入房间后,还没有出来,B 由于也能进入房间,就能打断 A 在房间里的隐私。因此就不具备原子性。而一条 Java 语句不一定是原子的,比如 count++,它其实由三步操作组成。...原创 2022-08-18 22:15:00 · 1038 阅读 · 0 评论 -
【多线程】多线程基础知识
Runnable 接口时线程辅助类,仅定义了一个 fun() 方法。该方法中描述了要实现的线程的内容。原创 2022-08-15 02:53:01 · 1171 阅读 · 2 评论