Java核心面试宝典Day13面试官最爱问的“进程”面试题
Posted 灰小猿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java核心面试宝典Day13面试官最爱问的“进程”面试题相关的知识,希望对你有一定的参考价值。
Hello,你好呀,我是
灰小猿
!一个超会写bug的程序猿!用坚持缔造技术、用指尖敲动未来!
和很多小伙伴们一样,我也是一名奔波在Java道路上的“创造者
”。也想靠技术来改未来,改变世界!因为我们坚信每一次敲动键盘都能让生活变得更智能、世界变得更有趣
!在此专栏《Java核心面试宝典》记录我们备战梦想的
【day 13】
!
前几天和大家一起总结了一些关于Java基础的相关面试题,但是这也只是其中的一部分,还有很多之后慢慢总结慢慢学习,今天呢,就来盘点一下在Java进程和线程控制上的一些面试题。
1、进程和线程有哪些联系?
进程是程序依次执行的过程,线程是比进程小的执行单位,一个进程在其执行过程中可以创建多个线程
,多个线程共享进程的堆和方法区内存资源
。
2、进程和线程的区别是什么?
进程和线程最大的区别是,进程是独
立的,而各个线程不一定独立,因为同一个进程中的多个线程很有可能相互影响,线程执行开销小,但不利于资源的管理和维护,进程开销较大,但是有利于资源的统一管理和维护。
3、线程的状态有几种,分别是什么状态?
线程的状态有6种,分别是初始状态
、运行状态
、阻塞状态
、等待状态
、超时等待状态
和终止状态
。
4、简述一下线程的6种状态?
- 初始状态(NEW): 线程已经构建,但是尚未启动。
- 运行状态(RUNNABLE): 包括就绪(READY)和运行中(RUNNING)两种状态,统称为运行状态。
- 阻塞状态(BLOCKED): 线程被锁阻塞。
- 等待状态(WAITING): 线程需要其他线程做出特定动作(通知或者中断)
- 超时等待状态(TIME_WAITING): 不等同于等待状态,超时等待状态可以在指定的时间内自行返回。
- 终止状态(TERMINATED): 当前线程已经执行完毕。
5、详细说一下等待状态和超时状态的区别?
和等待状态相比,超时等待状态增加了超时限制
,当达到执行的超时时间后,线程将会自动返回
到运行状态。
6、为什么需要使用多线程?
线程是程序执行的最小单位,多个线程同时运行可以减少线程上下文切换的开销
,多线程是开发高并发系统的基础(即允许同一时间段执行多个任务),利用好多线程机制可以很好的提升系统的并发能力
和性能
。
7、多线程可能存在哪些问题?
多线程可能存在的问题包括内存泄漏
、上下文切换
、死锁
以及受限于硬件和软件的资源限制
问题等。
8、那么多线程中关键字synchronized解决的是什么问题呢?
关键字synchronized解决的是多个线程之间访问资源的同步性
的问题。
9、关键字synchronized修饰实例方法、静态方法和代码块时,分别是什么含义?
修饰实例方法
时,会给当前对象实例加锁;
修饰静态方法
时,会给当前类加锁;
修饰代码块
时,会给指定对象加锁,进入同步代码/代码块之前需要获得当前对象/当前类/指定对象的锁。
10、关键字volatile有哪两个作用?
关键字volatile的作用是保证变量的可见性
,以及防止指令进行重排序优化
。
11、关键字volatile的使用需要满足什么条件?
使用关键字volatile的变量必须满足两个条件。
一是对变量的写入操作不依赖于变量的的当前值。能够确保只有单个线程更新变量的值。
二是该变量没有包含在具有其他变量的不变式中。
12、说一说关键字synchronized和volatile的区别?
关键字 volatile 是线程同步的轻量级实现,不需要加锁,因此性能优于关键字 synchronized。
关键字 synchronized 可以修饰方法和代码块,关键字 volatile 只能修饰变量。
关键字 synchronized 可能发生阻塞,关键字 volatile 不会发生阻塞。
关键字 synchronized 可以保证数据的可见性和原子性,关键字 volatile 只能保证数据的可见性,不能保证数据的原子性。
关键字 synchronized 解决的是多个线程之间访问资源的同步性,关键字 volatile 解决的是变量在多个线程之间的可见性。
今日总结
多线程相关的考察可以说是面试中必问的内容,尤其是对线程原理、synchronized
关键字的使用和线程常见问题的考察。
这方面的题目比较多,所以如果小伙伴们有遇到其他相关的面试题,欢迎在评论区留言提出,我会把大家提出的总结到文章内`, 欢迎小伙伴们一起评论区打卡学习!小伙伴们可也在左方加我好友一起探讨学习!
我是灰小猿
,我们下期见!
以上是关于Java核心面试宝典Day13面试官最爱问的“进程”面试题的主要内容,如果未能解决你的问题,请参考以下文章
好友给我分享了一份面试官最爱问的Java面试题,你值得拥有!