![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高频面试
文章平均质量分 65
小猪快跑22
专注于Java以及Android
展开
-
线程池要点分析
一、为什么要线程池?直接使用线程不行吗?线程过多会带来额外的开销,包括线程的创建和销毁。线程的运行需要占用 CPU 的时间片,系统中处于运行状态的线程数量越多,那么每个线程单位时间内分配到的时间片就越少,线程调度带来的上下文切换就会越多,最终导致CPU真正用于计算的时间就会越少。直接使用的线程是无法复用的,而线程池是能够实现线程复用的。二、线程池的好处有哪些?降低资源消耗:线程池能够实现线程复用,那么就可以降低线程的创建和销毁造成的损耗。提高响应速度:当任务到达时,能够被等待任务的线程立即执原创 2022-05-09 10:41:23 · 328 阅读 · 0 评论 -
静态内部类为何能够实现单例?
public class DeviceHelper { private DeviceHelper() { } private static class DeviceHelperHolder { /** * jvm 虚拟机规定当主动 new 一个对象时会触发类的初始化,初始化阶段也就是执行类构造器 <clinit>()方法的过程; * <clinit>() 方法对于类来说不是必须的,如果一个类中既没有静态原创 2022-03-08 10:08:11 · 535 阅读 · 1 评论 -
深刻理解 Kotlin高阶函数、匿名函数以及lambda表达式
在说高阶函数之前,我们得知道什么是函数类型,啊,什嘛?不知道函数类型?那好吧,下面就说说什么是函数类型。一 、函数类型在 Kotlin 里面定义变量类型很简单,如下:var a :Int = 1 // Int 型变量var person :Person = Person() // 定义 Person 型变量那么函数类型应该是什么样的表现形式呢?有的,形式如下:(X, Y)-> Z,其中 X 和 Y 表示函数的参数,当然了,参数的个数任意,这里只写了2个,Z 表示函数的返回值。知道这种原创 2021-10-13 19:34:13 · 493 阅读 · 0 评论 -
Java高频面试:3个线程循环n次,每次分别输出A、B、C
前言:假设有3个线程,循环5次,每次各个线程依次输出A、B、C。如下:thread_1 : >>> Athread_2 : >>> Bthread_3 : >>> Cthread_1 : >>> Athread_2 : >>> Bthread_3 : >>> Cthread_1 : >>> Athread_2 : >>> Bthread_3 :原创 2021-09-30 12:05:56 · 345 阅读 · 0 评论 -
Handler延时消息是如何实现的?
首先,需要明确一点,Handler 延时消息机制不是延时发送消息,而是延时去处理消息;举个例子,如下:handler.postDelayed(() ->{ Log.e("zjt", "delay runnable");}, 3_000);上面的 Handler 不是延时3秒后再发送消息,而是将消息插入消息队列后等3秒后再去处理。postDelayed 的方法如下:public final boolean postDelayed(@NonNull Runnable r, long d原创 2021-09-27 21:15:12 · 2846 阅读 · 0 评论 -
Java 高频面试:2个线程分别依次输出数字和字母
如题:假设有A、B 2个线程,分别依次输出1a2b3c4d,A线程输出数字,B线程输出字母。下面有几种方法,感觉方法1是最容易想到的。方法1:synchronized 和 wait/notify/** * 使用 synchronized 和 wait notify */ private static void func1() { char[] num = new char[]{'1', '2', '3', '4'}; char[] str =原创 2021-09-27 09:15:57 · 393 阅读 · 0 评论 -
高频面试---drawable-xhdpi中的图片放到xxhdpi的手机上,内存是如何变化的
一、首先看几个基本概念● 分辨率:分辨率就是手机屏幕的像素点数,一般描述成屏幕的“宽×高”,安卓手机屏幕常见的分辨率有480×800、720×1280、1080×1920等。720×1280表示此屏幕在宽度方向有720个像素,在高度方向有1280个像素。● 屏幕大小 : 屏幕大小是手机对角线的物理尺寸,以英寸(inch)为单位。比如某某手机为“5寸大屏手机”,就是指对角线的尺寸,5寸×2.54厘米/寸=12.7厘米。● 屏幕密度:就是每英寸的像素点数,数值越高当然显示越细腻;就是屏幕对角线的长度 /原创 2021-01-20 19:07:59 · 2567 阅读 · 8 评论 -
Android 启动速度优化之--- 提高 ARouter 的初始化速度
如何提高 ARouter 的初始化速度在 app module 的 build.gradle 中 加入:apply plugin: 'com.alibaba.arouter'在项目的 build.gradle中加入:buildscript { repositories { jcenter() } dependencies { classpath "com.alibaba:arouter-register:1.0.2" }原创 2021-01-20 11:30:40 · 4473 阅读 · 12 评论 -
高频面试--RxJava线程切换的原理
前言最近跟朋友聊天,聊到了最近面试的高频题目就聊到了RxJava 的线程切换原理。我们Android 开发大部分应该 RxJava 都用的很6,RXJava + Retrofit + OkHttp 大礼包都用的贼6。自从用了 RxJava 之后 ,Handler 和 SyncTask 基本消失在日常代码中啦。所以本篇就从源码的角度分析 RxJava 线程切换的原理。注意:本篇的源码基于 RxJava 3.0.7, RxAndroid 3.0.0。还得配置基于JAVA8,否则会报错,因为RxAndroi原创 2021-01-14 11:40:48 · 3071 阅读 · 4 评论