研发面试
qq_42800477
这个作者很懒,什么都没留下…
展开
-
线程安全与锁优化
线程安全 当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那就称这个对象是线程安全的。 线程安全是一个多线程环境下正确性的概念,也就是保证多线程环境下共享的、可修改的状态的正确性 不可变(final关键字修饰) 绝对线程安全 相对线程安全,就是我们通常意义上所讲的线程安全 线程兼容 线程对立 线程安全需要保证几个基本特征:原子性,可见性,有序性 线程安全的实现方法 互斥同步.原创 2020-07-16 16:48:12 · 83 阅读 · 0 评论 -
CAS
首先,CAS就是CompareAndSwap。 接下来从引入CAS的原因和CAS存在的ABA问题,以及如何解决ABA问题讲解 引入CAS 考虑这样一个业务场景,有一百个用户,每个用户访问网站十次,记录网址总共被访问多少次。 很简单,创建100个Thread,每个Thread执行10次 count ++ 语句。但这样会出现线程安全的问题。因为count ++ 不是原子操作,而是有3个步骤:从主存中获取count的值,在Thread缓存中执行count + 1的操作,把新值写入主存中。如果Thread01刚执原创 2020-07-07 11:23:08 · 114 阅读 · 0 评论 -
线程池初学
什么是线程池? 线程池其实就是一种多线程处理形式,处理过程中可以将任务添加到队列中,然后在创建线程后自动启动这些任务。这里的线程就是我们前面学过的线程,这里的任务就是我们前面学过的实现了Runnable或Callable接口的实例对象 为什么使用线程池 使用线程池的最大原因就是可以根据系统的需求和硬件环境灵活的控制线程的数量,且可以对所有线程进行统一的管理和控制,从而提高系统的运行效率,降低系统运行压力 使用线程池有哪些优势 一 线程和任务分离,提升线程重用性 二 控制线程并发数量,降低服务器压..原创 2020-07-04 23:59:26 · 104 阅读 · 0 评论 -
面试
HashMap常见知识点 1.构造函数 public HashMap(int initialCapacity, float loadFactor) 参数是容器大小和负载因子。 initialCapacity小于0会报错,其它均合法。但是都会通过tableSizeFor()函数转换成2的整数次幂。 public HashMap(int initialCapacity) { this(initialCapacity, DEFAULT_LOAD_FACTOR); } 实际上就是调用第一个构造函数,load原创 2020-07-02 16:33:58 · 84 阅读 · 0 评论