java线程问题小结-----常见面试问题
为什么80%的码农都做不了架构师?>>>
1. 线程通信的几种方法:
共享内存,消息,管道,信号量,socket
2. 什么是线程:
同一个进程不同的执行路径
3. Java中线程和进程的区别:
一个进程包含很多个线程,线程是进程的子集。
4. 如何在java中实现线程:
在语言层面有两种方式,第一种是Thread类,第二种是Runnable接口.
5. Thread类中start()方法和run()方法的区别:
start()方法用来创建和启动线程,内部使用了run()方法。而run()方法本身就是一个方法直接调用不会启动新的线程。
6. Java中的Runnable和Callable有何不同?
Runnable和Callable都代表了在不同的线程中执行任务,Callable是JDK1.5之后才有的。他们的主要区别是Callable的call方法可以有返回值和抛出异常。而run()方法没有这些功能。
7. Java中的CyclicBarrier和CountDownLatch有什么区别?
都可以让一组线程等待其他线程。CountDownLatch不能重新使用,而CyclicBarrier可以重新使用。
8. Java的内存模型是什么?
Java内存模型规定和指引java程序在不同的内存架构和CPU,操作系统有确定的行为。它在多线程情况下尤为重要,java内存模型对一个线程所做的所有变动都能够被其他线程可见提供了保证。他们之间是先行发生关系。
线程内部的代码能够按照先后顺序执行
对于同一个锁,一个解锁操作发生时间一定在一个另一个锁定操作之前。也叫管程锁定规则。
前一个volatile的写操作在后一个volatile的读操作之前。也叫volatile变量规则。
一个线程内的任何操作必须在线程的start()方法调用之后,也叫做线程启动规则。
一个线程的所有操作都在线程终止之后,线程终止规则。
一个对象的终结操作必须在这个对象构造完成之后。对象终结规则。
可传递性
9. Java中的volatile变量是什么?
成员变量的特殊修饰符,volatile变量保证读操作在写操作之后。
10. 什么是线程安全?Vector是一个线程安全类吗?
每次执行的结果都和单线程执行的一样就是线程安全。Vector是用同步方法来实现线程安全的。ArrayList是非线程安全的,Vector是线程安全的;HashMap是非线程安全的,HashTable是线程安全的;StringBuilder是非线程安全的,StringBuffer是线程安全的。
11. Java中什么是竞态条件?
竞态条件会导致程序在并发的情况下出现莫名的bugs。多线程对一些资源进行竞争的时候就会出现。
12. Java中如何停止一个线程?
使用while()循环
13. 一个线程运行时发生异常会怎么样?
如果异常没有被捕获该线程会停止运行,JVM使用Thread.UncaughtExceptionHandler处理未捕获线程异常中断
14. 两个线程之间如何实现共享数据?
使用共享对象或者使用阻塞队列这种数据结构。
15. Java中notify和notifyAll有什么区别?
notify()方法不能唤醒某个具体的线程只有一个线程在等待的时候才能使用。notifyAll()唤醒所有的进程并允许他们争夺锁确保至少有一个线程能继续执行。
16. 为什么wait, notify和notifyAll不定义在Thread里面?
Java提供的锁是对象级别的而不是线程级别的,这三个都是对锁级别的操作,所有定义在Object对象中是因为锁属于对象。
17. 什么是ThreadLocal变量?
线程自己独立拥有的局部变量,防止竞争不可占用资源。
18. Java中的interrupted和isInterrupted方法的区别?
前者会在中断状态下清除后者不会。Java多线程的中断机制是用内部标识来实现的,调用Thread. Interrupt()方法来中断一个线程就会设置中断标识为true。当中断线程调用静态方法Thread. Interrupted()来检查中断状态时,中断状态会被清0,而非静态方法isInterrupted()用来查询线程中断状态且不会改变中断线程标识。一个线程的中断状态有可能被其他线程调用中断来改变。
19. 为什么wait和notify方法要在同步块中调用?
防止wait和notify之间产生竞争
20. Java中的同步集合和并发集合的区别?
同步集合和并发集合都为并发和多线程提供了合适的线程安全集合,不过并发集合的可扩展性更高。1.5并发集合更像ConcurrentHashMap,线程安全提供了锁分离,内部分区,CAS算法等技术。
21. 什么是线程池?为什么要用?
创建对象要花费时间,如果任务来时才创建线程那么响应时间会变长。而且一个进程创建的线程数有限。
22. 如何用写代码解决生产消费问题?
用一个队列,一段生产一段消费。
23. 如何避免死锁?
死锁是指两个或者两个以上的进程在执行过程中,因争夺资源而造成的互相等待的现象。死锁会让线程挂起。
互斥条件:一个资源每次只能被一个进程使用
请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
不剥脱条件:进程已获得资源,在未使用完之前,不能强行剥夺。
循环等待条件:若干个进程形成首尾相连的资源链
24. 什么是阻塞式方法?
是指程序一直等待该方法完成期间不做其他的事情,比如socket方法的accept()方法
25. Java线程池的submit()和execut()方法的区别?
都是向线程池提交任务,execut()方法返回值void,submit()方法可以返回持有计算结果的future对象。
转载于:https://my.oschina.net/gaomq/blog/898898
java线程问题小结-----常见面试问题相关推荐
- Java架构师 HR常见面试问题_Java架构师,常见的几个JEE面试问题, 感觉还是有些地方有点晕。 稀里糊涂,晒一下...
Java架构师,常见的几个JEE面试问题, 感觉还是有些地方有点晕. 稀里糊涂,晒一下~~~ 让大家见笑了. 请拍砖. [重要的两块,都是常问的问题, 能答上了,但是还是答不清楚. 面试官的结论: & ...
- java线程池应用场景面试,含小米、腾讯、阿里
前言 本系列的目的是明明白白.彻彻底底的搞定日期/时间处理的几乎所有case.上篇文章铺设所有涉及到的概念解释,例如GMT.UTC.夏令时.时间戳等等,若你还没看过,不仅强烈建议而是强制建议你前往用花 ...
- java 线程关闭小结(转)
首先,要说的是java中没有一种停止线程的方法是绝对安全的. 线程的中断 Thread.interrput()方法很容易给人一种误会,让人感觉是一个线程使另外一个正在运行的线程停止工作, 但实际上in ...
- Java菜鸟补给站--常见面试简答题( 一 )
1.关于JDK,JRE 和 JVM的认识理解 2.Java 和 c++的区别? 3.Java 应用程序与小程序之间有那些差别? 4.字符型常量和字符串常量的区别? 5. Java中有那些常见的关键字? ...
- java线程池的面试题_献给准备面试的你,Java线程and线程池面试题小结
最近这几天一直在整理Java相关的面试题,"金九银十"是求职的最佳时间,但是现在的"银十"也已经过去了一半的时间,相信现在还在为面试四处奔波的小伙伴已经很疲惫了 ...
- 面试必问---Java线程池8大拒绝策略
前言 谈到java的线程池最熟悉的莫过于ExecutorService接口了,jdk1.5新增的java.util.concurrent包下的这个api,大大的简化了多线程代码的开发.而不论你用Fix ...
- java面试常见面试问题_Java面试准备:15个Java面试问题
java面试常见面试问题 并非所有的访谈都将重点放在算法和数据结构上-通常,访谈通常只侧重于您声称是专家的语言或技术.在此类访谈中,通常没有任何"陷阱"问题,而是它们要求您利用内存 ...
- Java线程面试的前50个问题,面向初学者和经验丰富的程序员
您可以参加任何Java面试,无论是大四还是中级,经验或新来的人,一定会看到线程,并发和多线程中的几个问题. 实际上,这种内置的并发支持是Java编程语言的最强优势之一,并帮助它在企业界和程序员中同 ...
- 面试官问你Java线程池--怎么样回答才能让面试官知道你真的懂了!
一.引言 不管是Java面试还是Android面试,线程池都是面试官高频考察的点,那我们怎么回答,才能让面试官了解到我们是真的懂Java线程池了呢?这篇文章不涉及到线程池的使用和原理,如果你还不知道怎 ...
最新文章
- 二值logit模型的适用条件_一文读懂条件Logistic回归
- 百度线下赛道报名通知!
- PHP表单提交参数验证类(可修改)
- C# 全角半角相互转换
- SystemVerilog例子---traffic light
- bi 存储过程方案_BI 系统中容易被忽视的数据源功能
- python collection 和 heapq 模块使用说明
- 【100题】第三十六 比赛淘汰问题(谷歌笔试)
- Win7(x64)升级到Win10
- jdbc 连接oracle 数据库格式
- 《The Django Book》笔记(未完结)
- android开源库合集
- 气象数据之积温数据的获取与处理
- 小白入门之海康威视摄像机的二次开发
- 境外显示手机无服务器,手机卡在国外无服务怎么办
- vue 项目使用Standardjs进行语法错误检测和修复
- java中String s=abc及String s=new String(abc)详解
- Windows XP SP3 升级故障汇总
- 小学计算机教室外墙文化建设,4款小学教室外墙布置图片 小学教室走廊班牌班级文化墙设计图片...
- 【IoT】 产品设计:如何做MRD和BRD?
热门文章
- java 模仿支付成功_揭秘Java工程师薪资为何这么高,教你如何成为架构师拿50W年薪!...
- linux+sar+服务,sar服务监控Linux
- 容器处于restarting状态_Docker容器操作-基础命令
- 四管前级怎么去掉高低音音调_TDG Audio达芬奇:什么是前级,后极?
- 【总结】有三AI大量原创视频和图文资料,你都存下来了吗
- 【知识星球】ElementAI提出超复杂多尺度细粒度图像分类Attention模型
- 【github干货】主流深度学习开源框架从入门到熟练
- 中国联轴器行业发展态势分析及十四五规划建议报告2021-2027年
- VC++下Window剪贴板的操作
- VB为自己的程序设定消息(可接收处理)