【Android面试】Java面试题整合

一、说下java中的线程创建方式,线程池的工作原理。

java中有三种创建线程的方式,或者说四种 :

1.继承Thread类实现多线程

2.实现Runnable接口

3.实现Callable接口

4.通过线程池 线程池的工作原理:线程池可以减少创建和销毁线程的次数,从而减少系统资源的消耗,当一个任务提交到线程池时 a. 首先判断核心线程池中的线程是否已经满了,如果没满,则创建一个核心线程执行任务,否则进入下一步b. 判断工作队列是否已满,没有满则加入工作队列,否则执行下一步 c. 判断线程数是否达到了最大值,如果不是,则创建非核心线程执行任务,否则执行饱和策略,默认抛出异常。

二、线程的几种状态,相互之间是如何转化的

1) 初始状态(New),新创建了一个线程对象就进入了初始状态,也就是通过上述新建线程的几个方法就能进入该 状态。

2) 可运行状态,就绪状态(RUNNABLE)。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。 该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权。以下几种方式会进入可运行状态: 1、调用start方法。 2、拿到对象锁 3、调用yield方法

3)运行状态(RUNNING)。可运行状态(runnable)的线程获得了cpu 时间片 ,执行程序代码。线程调度程序从可运行池中选择一个线程作为当前线程,就会进入运行状态。

4)阻塞状态(BLOCKED)。线程正在运行的时候,被暂停,通常是为了等待某个时间的发生(比如说某项资源就绪)之 后再继续运行。wait,sleep,suspend等方法都可以导致线程阻塞。

5)死亡状态(DEAD)。线程run()、main() 方法执行结束,或者因异常退出了run()方法,则该线程结束生命周期。死亡的线程不可再次复生。

三、String是java中的基本数据类型吗?是可变的吗?是线程安全的吗?

1、String不是基本数据类型,java中把大数据类型是:byte, short, int, long, char,float,double,boolean 2、String是不可变的 3、String是不可变类,一旦创建了String对象,我们就无法改变它的值。因此,它是线程安全的,可以安全地用于多线程环境中

四、为什么要设计成不可变的呢?如果String是不可变的,那我们平时赋值是改的什么呢?

1)为什么设计不可变

安全。由于String广泛用于java类中的参数,所以安全是非常重要的考虑点。包括线程安全,打开文件,存储数 据密码等等。 String的不变性保证哈希码始终一,所以在用于HashMap等类的时候就不需要重新计算哈希码,提高效率。 因为java字符串是不可变的,可以在java运行时节省大量java堆空间。因为不同的字符串变量可以引用池中的相 同的字符串。如果字符串是可变得话,任何一个变量的值改变,就会反射到其他变量,那字符串池也就没有任何 意义了。

2)平时使用双引号方式赋值的时候其实是返回的字符串引用,并不是改变了这个字符串对象

五、浅谈一下String, StringBuffer,StringBuilder的区别?String的两种创建方式,在JVM的存储方式相同吗?

String是不可变类,每当我们对String进行操作的时候,总是会创建新的字符串。操作String很耗资源,所以Java提供了两个工具类来操作String - StringBuffer和StringBuilder。

StringBuffer和StringBuilder是可变类,StringBuffer是线程安全的,StringBuilder则不是线程安全的。所以在多线程对同一个字符串操作的时候,我们应该选择用StringBuffer。由于不需要处理多线程的情况,StringBuilder的效率比StringBuffer高。

1) String常见的创建方式有两种 String s1 = “Java”和 String s2 = new String("Java")

2)存储方式不同。 第一种,s1会先去字符串常量池中找字符串"Java”,如果有相同的字符则直接返回常量句柄,如果没有此字符串 则会先在常量池中创建此字符串,然后再返回常量句柄,或者说字符串引用。 第二种,s2是直接在堆上创建一个变量对象,但不存储到字符串池 ,调用intern方法才会把此字符串保存到常量池中

#android面试#
全部评论
很详细,谢谢大佬
点赞 回复 分享
发布于 2023-02-11 16:18 辽宁
还有回答,爱了爱了
点赞 回复 分享
发布于 2023-02-11 16:24 黑龙江

相关推荐

评论
2
13
分享

创作者周榜

更多
牛客网
牛客企业服务