面试官想考考我多线程方面的问题。
1、请说下线程与进程的关系。
答:《操作系统》中是这样说的
(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程是操作系统可识别的最小执行和调度单位。
(2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有自己的栈段,栈段又叫运行时段,用来存放所有局部变量和临时变量。
(3)处理机分给线程,即真正在处理机上运行的是线程。
(4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
2、请说下线程池的概念。
答:线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。
3、请说下NIO与多线程Socket区别
答:这个问题就是在问NIO与BIO、AIO的区别。
IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO(Selector模型)、异步非阻塞的AIO。
BIO是一个连接一个线程。
NIO是一个请求一个线程。
AIO是一个有效请求一个线程。
传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内存和CPU线程切换的开销将非常巨大。使用NIO,不再需要为每个线程创建单独的线程,可以用一个含有限数量线程的线程池,甚至一个线程来为任意数量的连接服务。由于线程数量小于连接数量,所以每个线程进行IO操作时就不能阻塞,如果阻塞的话,有些连接就得不到处理,NIO提供了这种非阻塞的能力。参考http://blog.csdn.net/zhouhl_cn/article/details/6568119。
分享到:
相关推荐
"面试中多线程问题" 多线程是 Java 编程中一个重要的概念,掌握多线程可以帮助开发者更好地编写高效、稳定的程序。以下是面试中常见的多线程问题和解释: 1. 实现多线程的几种方法? Java 中有两种方式可以实现多...
### Java程序员面试中的多线程问题详解 #### 1. 多线程同步的理解 **多线程同步**是Java多线程编程中一个非常重要的概念。在并发环境中,多个线程可能会同时访问和修改同一份共享数据。如果没有适当的同步机制,...
面试题总结——多线程篇 一、多线程实现方式 多线程实现方式主要有四种:继承 Thread 类、实现 Runable 接口、实现 Callable 接口、通过 FutureTask 包装器。这四种方式可以满足不同的需求,例如继承 Thread 类...
以上总结了关于Java多线程面试问题中的一些核心知识点,包括进程与线程的区别、创建线程的不同方法以及推荐使用的理由,还有对高级线程状态的概述。这些知识点对于理解Java多线程的基本概念和实际应用都非常关键。
JAVA面试问题总结 JAVA是一种广泛应用的编程语言,作为一名JAVA开发者,需要具备扎实的基础知识和实践经验。本文总结了常见的JAVA面试问题,涵盖了JAVA基础、JSP、Servlet、XML、J2EE、MVC、数据库等方面的知识点。...
本文将详细解析几个常见的Java多线程面试问题及其答案。 1. **Java中的多线程同步是什么?** 多线程同步是一种机制,用于在并发环境中控制对共享资源的访问,防止数据不一致和竞态条件的发生。Java提供了多种同步...
Java 多线程相关面试题总结 Java 多线程相关面试题是一组常见的 Java 面试题,涵盖了 Java 多线程编程的基础知识和高级概念。本文将对这些问题进行详细的解释和分析,帮助读者更好地理解 Java 多线程编程。 1. 为...
面试中,Java 集合框架和多线程并发是常见的话题,因为它们是构建可扩展和健壮应用的基础。本题旨在考察候选人在实际并发场景下对 HashMap 和 ConcurrentHashMap 的理解和应用。 HashMap 和 ConcurrentHashMap 的...
java工程师面试题大全-100%公司笔试题你都能碰到几个.docx Java开发工程师上机笔试题.docx Java开发求职面试题.docx Java开发笔试题.docx Java数据结构类面试题.docx Java数据结构题.docx Java笔试面试宝典.docx ...
Java的异常处理主要包括以下几个关键部分: - **Try**:尝试执行的代码块。 - **Catch**:捕获异常并处理。 - **Finally**:无论是否发生异常都会执行。 - **Throw/Throws**:用于抛出异常或声明可能抛出的异常。 #...
首先,Java面试通常会围绕以下几个核心领域展开: 1. **基础知识**:面试官会检查你对Java语法、数据类型、类与对象、封装、继承、多态等基础概念的理解。此外,内存管理(如堆栈、垃圾回收机制)和异常处理也是...
### Java面试中电商领域的常见问题解析 #### 一、多线程的应用场景及安全性 ...以上总结了Java面试中关于电商领域的一些常见问题及其解答思路,旨在帮助求职者更好地准备面试,理解电商系统的关键技术和业务逻辑。
│ Java面试题04.java中int占几个字节.mp4 │ Java面试题05.java面向对象的特征.mp4 │ Java面试题06.装箱和拆箱.mp4 │ Java面试题07.==和equals的区别.mp4 │ Java面试题08.String.mp4 │ Java面试题09.讲一下java...
根据提供的文件信息,我们可以深入探讨Java多线程领域的一些核心概念和面试...以上就是Java多线程面试中常见的几个核心知识点及其详细解释。这些概念和技术在现代软件开发中尤为重要,尤其是在处理并发和高性能系统时。
### 15个顶级Java多线程面试题及回答解析 #### 1. 线程执行顺序控制 - **题目**: 现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行? - **解析**: 这个问题考察了面试者对于`join()`...
从给定的文件信息中,我们可以提取出一系列与Java编程语言相关的面试问题...以上知识点涵盖了Java面试中常见的几个方面,理解这些概念对于Java程序员来说至关重要,不仅有助于通过面试,更能提升日常编码的质量和效率。
Java面试的准备可以分为几个部分,其中最重要的部分是Java技术相关,包括了Java的基础知识、核心API的解读以及Java中高级技术的理解。同时,面试者应该熟悉应聘流程,了解如何撰写简历,以及在面试中如何谈论福利...
### JAVA面试题——多线程知识点详解 #### 一、线程与进程的基本概念 线程和进程是并发编程中的两个基本概念。进程是操作系统进行资源分配和调度的基本单位,而线程则是进程中的实际运行单元。每一个进程都有其...
### 15个多线程问题集锦:Java多线程的核心使用问题及注意事项 #### 1. 多线程执行顺序控制 - **问题描述**:假设存在三个线程T1、T2、T3,如何确保T2在线程T1执行完毕后开始执行,而T3又在线程T2执行完毕后开始...
### 知识点详解:Java多线程面试关键概念 #### 1....这些知识点涵盖了Java多线程面试中常见的几个核心概念,理解并掌握它们对于Java开发人员来说至关重要,尤其是在准备面试或深入研究并发编程时。