前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Java核心面试宝典】Day13、面试官最爱问的“进程”面试题

【Java核心面试宝典】Day13、面试官最爱问的“进程”面试题

作者头像
灰小猿
发布2021-09-23 15:22:00
3170
发布2021-09-23 15:22:00
举报

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关键字的使用和线程常见问题的考察。

这方面的题目比较多,所以如果小伙伴们有遇到其他相关的面试题,欢迎在评论区留言提出,我会把大家提出的总结到文章内`, 欢迎小伙伴们一起评论区打卡学习!小伙伴们可也在左方加我好友一起探讨学习!

我是灰小猿,我们下期见!

请添加图片描述
请添加图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-08-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、进程和线程有哪些联系?
  • 2、进程和线程的区别是什么?
  • 3、线程的状态有几种,分别是什么状态?
  • 4、简述一下线程的6种状态?
  • 5、详细说一下等待状态和超时状态的区别?
  • 6、为什么需要使用多线程?
  • 7、多线程可能存在哪些问题?
  • 8、那么多线程中关键字synchronized解决的是什么问题呢?
  • 9、关键字synchronized修饰实例方法、静态方法和代码块时,分别是什么含义?
  • 10、关键字volatile有哪两个作用?
  • 11、关键字volatile的使用需要满足什么条件?
  • 12、说一说关键字synchronized和volatile的区别?
  • 今日总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档