多线程面试

1. Java创建线程之后,直接调用start()方法和run()的区别

2. 常用的线程池模式以及不同线程池的使用场景

3. newFixedThreadPool此种线程池如果线程数达到最大值后会怎么办,底层原理。

4. 多线程之间通信的同步问题,synchronized锁的是对象,衍伸出和synchronized相关很多的具体问题,例如同一个类不同方法都有synchronized锁,一个对象是否可以同时访问。或者一个类的static构造方法加上synchronized之后的锁的影响。

5. 了解可重入锁的含义,以及ReentrantLock 和synchronized的区别

6. 同步的数据结构,例如concurrentHashMap的源码理解以及内部实现原理,为什么他是同步的且效率高

7. atomicinteger和Volatile等线程安全操作的关键字的理解和使用

8. 线程间通信,wait和notify

9. 定时线程的使用

10. 场景:在一个主线程中,要求有大量(很多很多)子线程执行完之后,主线程才执行完成。多种方式,考虑效率。

11. 进程和线程的区别

12. 什么叫线程安全?举例说明

13. 线程的几种状态

14. 并发、同步的接口或方法

15. HashMap 是否线程安全,为何不安全。 ConcurrentHashMap,线程安全,为何安全。底层实现是怎么样的。

16. J.U.C下的常见类的使用。 ThreadPool的深入考察; BlockingQueue的使用。(take,poll的区别,put,offer的区别);原子类的实现。

17. 简单介绍下多线程的情况,从建立一个线程开始。然后怎么控制同步过程,多线程常用的方法和结构

18. volatile的理解

19. 实现多线程有几种方式,多线程同步怎么做,说说几个线程里常用的方法

时间: 2024-10-07 09:09:15

多线程面试的相关文章

Java多线程面试15道

Java 线程面试问题 在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分.如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程的问题.在投资银行业务中多线程和并发是一个非常受欢迎的话题,特别是电子交易发展方面相关的.他们会问面试者很多令人混淆的Java线程问题.面试官只是想确信面试者有足够的Java线程与并发方面的知识,因为候选人中有很多只浮于表面.用于直接面向市场交易的高容量和低延时的电子交易系统在本质上是并发的.下面这些是我在不同时间不同地点喜欢问的Jav

Java多线程面试问题

原文链接:http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-answers/ 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一.在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题. Java多线程面试问题 1. 进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者

天下无难试之多线程面试刁难大全

多线程技术在互联网技术方面使用如此广泛,几乎所有的后端技术面试官都要在并发编程的使用和原理方面对小伙伴们进行各种刁难.作为一名在互联网技术行业打击过成百上千名[请允许我夸张一下]的资深技术面试官,看过了无数落寞的身影失望的离开,略感愧疚,故献上此文,希望各位读者以后面试势如破竹,永无失败! 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位,可以使用多线程对进行运算提速. 比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10

程序员Java架构师多线程面试最精彩的回答

当我们在Java架构师面试的过程中常见的多线程和并发方面的问题肯定是必不可少的一部分.那么在面试之前我们更应该多准备一些关于多线程方面的问题.面试官只是想确信面试者有足够的Java线程与并发方面的知识,因为有很多只停留于表面的理论知识,归根结底还是功力不够扎实.下面这些是我在不同时间不同地点喜欢问的Java线程问题,供大家参考. 15个Java架构师多线程面试题及回答解析1)你将如何使用threaddump?你将如何分析Threaddump? 在UNIX中你可以使用kill-3,然后thread

多线程--面试

50道Java线程面试题(原链接 http://www.importnew.com/21089.html) 下面是Java线程相关的热门面试题,你可以用它来好好准备面试. < 线程的五种状态 线程从创建.运行到结束总是处于下面五个状态之一:新建状态.就绪状态.运行状态.阻塞状态及死亡状态. 1.新建状态(New):         当用new操作符创建一个线程时, 例如new Thread(r),线程还没有开始运行,此时线程处在新建状态. 当一个线程处于新生状态时,程序还没有开始运行线程中的代码

多线程面试秒杀系列5--多线程入门

首先我们先来看一个程序,从这个程序来引出多线程的控制手段,怎么样使得每个线程相互是互斥的,下面这个程序大概就是创建10个线程,并输出线程的序号,但是因为没有控制手段导致序号输出的时候是混乱的,因为线程的执行时没有顺序的它是并行执行的所以如果变量不加以控制就会出现混乱的情况.程序使用codeblocks编译的. #include <iostream> #include <stdio.h> #include <process.h> #include <windows.

谈谈Java多线程(面试)

多线程的目的是为了最大限度的利用CPU资源. Java编写程序都运行在在Java虚拟机(JVM)中,在JVM的内部,程序的多任务是通过线程来实现的.每用java命令启动一个java应用程序,就会启动一个JVM进程.在同一个JVM进程中,有且只有一个进程,就是它自己.在这个JVM环境中,所有程序代码的运行都是以线程来运行. Java 虚拟机允许应用程序并发地运行多个执行线程.Java语言提供了多线程编程的扩展点,并给出了功能强大的线程控制API. 在Java中,多线程的实现有两种方式: 扩展jav

多线程面试秒杀系列3---一个带有全局变量的多线程程序

我们能不能来一个线程报数功能,即第一个子线程输出1,第二个子线程输出2,第三个子线程输出3,--.要实现这个功能似乎非常简单--每个子线程对一个全局变量进行递增并输出就可以了. 代码如下: //子线程报数 #include <stdio.h> #include <process.h> #include <windows.h> int g_nCount; //子线程函数 unsigned int __stdcall ThreadFun(PVOID pM) { g_nCou

多线程面试秒杀系列4---Interlocked系列函数的简要分析

上一篇中我们出现了脏读的问题,但是却没有给出解决办法这一篇中我们这一篇中主要说明一下interlocked系列函数. 下面列出一些常用的Interlocked系列函数: 1.增减操作 LONG__cdeclInterlockedIncrement(LONG volatile* Addend); LONG__cdeclInterlockedDecrement(LONG volatile* Addend); 返回变量执行增减操作之后的值. LONG__cdec InterlockedExchange

多线程面试秒杀系列6--临界区函数的使用

上一次我们给出了一个小程序,这次我们来使用临界区解决上一节没有解决的问题,临界区其实只有四个函数,分别是初始化.销毁.进入临界区.离开临界区. 函数功能:初始化 函数原型: void InitializeCriticalSection(LPCRITICAL_SECTIONlpCriticalSection); 函数说明:定义关键段变量后必须先初始化. 函数功能:销毁 函数原型: void DeleteCriticalSection(LPCRITICAL_SECTIONlpCriticalSect