并发面试题

线程基础

  1. 什么是进程 什么是线程
①进程是什么:
        进程即是操作系统对运行程序的一种抽象,操作系统需要识别运行的程序以及分配内存空间等,实现的方式也就是进程,通俗的说法就是操作系统资源分配的基本单位。
②进程的组成:
        进程(进程实体)由程序段、数据段、PCB(进程控制块)三部分组成。同一个程序多个进程的代码段是共享的。
③线程是什么(可参照Thread类):
         线程(Thread)是操作系统能够进行运算调度的最小单位,也是程序执行的最小单元
④线程由什么组成:
         每个线程都有自己的程序计数器、栈(存储局部变量、函数调用链)、寄存器状态(线程切换时保存)等线程私有的数据
⑤线程与进程的关系:
       1.一个进程至少有一个线程(主线程),但可以创建多个线程
       2.线程共享进程的资源(如内存、文件描述符)
       3.多线程比多进程更轻量级
⑥用户态和内核态:
      用户态是指应用程序所在的环境空间中,只可访问自己的内存空间和CPU非特权的指令集。
      内核态是指操作系统内核所处的执行环境,内核态下有权限访问和处理操作系统的所有资源,包括 CPU 的特权指令集、内存和所有硬件设备等。在内核态下运行的代码通常是操作系统内核的部分或全部,例如设备驱动程序、进程管理、文件系统等。
  1. 什么是多线程中的上下文切换
  2. 创建线程的有几种方式
  3. 线程有几种状态?是怎么流转的
  4. 线程是如何被调度的?
  5. 什么是并发?什么是并行
  6. 谈谈你对线程安全的理解?
  7. 什么是守护线程和普通线程有什么区别?
  8. JDK中的虚拟线程是怎么回事
  9. run/start、 wait/sleep、notify/notifyall的区别
  10. 线程同步的方式有哪些?
  11. 什么是Java内存模型?
  12. 父子线程之间如何共享/传递数据
  13. 有三个线程T1、T2、T3,如何保证顺序执行
  14. 如何对多线程进行编排
  15. 三个线程分别按照顺序打印0-100
  16. Java是如何判断一个线程是存活的
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容