java线程池的面试题_献给准备面试的你,Java线程and线程池面试题小结
最近这几天一直在整理Java相关的面试题,“金九银十”是求职的最佳时间,但是现在的“银十”也已经过去了一半的时间,相信现在还在为面试四处奔波的小伙伴已经很疲惫了吧,下面就来减轻你负担,Java线程和线程池相关的面试题整理给大家,减轻你准备面试的负担。
丑话说在前面,我“丑”我先说,嘿嘿。因为篇幅有限,所以这次的文章不会包含面试题的所有的内容,在这里求大家点一波关注啦!以后会持续更新哒!
1、为什么用线程池?
有时候,系统需要处理非常多的执行时间很短的请求,如果每一个请求都开启一个新线程的话,系统就要不断的进行线程的创建和销毁,有时花在创建和销毁线程上的时间会比线程真正执行的时间还长。
而且当线程数量太多时,系统不一定能受得了。
使用线程池主要为了解决一下几个问题:通过重用线程池中的线程,来减少每个线程创建和销毁的性能开销。
对线程进行一些维护和管理,比如定时开始,周期执行,并发数控制等等。
2、线程池参数什么意思?
比如去火车站买票, 有10个售票窗口, 但只有5个窗口对外开放. 那么对外开放的5个窗口称为核心线程数, 而最大线程数是10个窗口.
如果5个窗口都被占用, 那么后来的人就必须在后面排队, 但后来售票厅人越来越多, 已经人满为患, 就类似于线程队列已满.这时候火车站站长下令, 把剩下的5个窗口也打开, 也就是目前已经有10个窗口同时运行. 后来又来了一批人,10个窗口也处理不过来了, 而且售票厅人已经满了, 这时候站长就下令封锁入口,不允许其他人再进来, 这就是线程异常处理策略.而线程存活时间指的是, 允许售票员休息的最长时间, 以此限制售票员偷懒的行为.
3、程序、进程、线程的区别是什么? 举个现实的例子说明。
程序(Program):是一个指令的集合。程序不能独立执行,只有被加载到内存中,系统为它分配资源后才能执行。
进程(Process):如上所述,一个执行中的程序称为进程。进程是系统分配资源的独立单位,每个进程占有特定的地址空间。
程序是进程的静态文本描述,进程是程序在系统内顺序执行的动态活动。
线程(Thread):是进程的“单一的连续控制流程“。线程是CPU调度和分配的基本单位,是比进程更小的能独立运行的基本单位,也被称为轻量级的进程。
线程不能独立存在,必须依附于某个进程。一个进程可以包括多个并行的线程,一个线程肯定属于一个进程。Java虚拟机允许应用程序并发地执行多个线程。
举例:如一个车间是一个程序,一个正在进行生产任务的车间是一个进程,车间内每个从事不同工作的工人是一个线程。
4、Java中通过哪些方式创建多线程类?继承Thread类创建线程
实现Runnable接口创建线程
实现Callable接口通过FutureTask包装器来创建Thread线程
使用ExecutorService、Callable、Future实现有返回结果的线程
5、Thread类有没有实现Runnable接口?
6、当调用一个线程对象的start方法后,线程马上进入运行状态吗?
不是,只是进入就绪(可运行)状态,等待分配CPU时间片。一旦得到CPU时间片,即进入运行状态。
7、线程的几种状态
1.线程通常有五种状态,创建,就绪,运行、阻塞和死亡状态。
2.阻塞的情况又分为三种:
(1)、等待阻塞:运行的线程执行wait()方法,该线程会释放占用的所有资源,JVM会把该线程放入“等待池”中。进入这个状态后,是不能自动唤醒的,必须依靠其他线程调用notify()或notifyAll()方法才能被唤醒,wait是object类的方法
(2)、同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入“锁池”中。
(3)、其他阻塞:运行的线程执行sleep()或join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。sleep是Thread类的方法
编辑搜图
请点击输入图片描述
1.新建状态(New):新创建了一个线程对象。
2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。
3. 运行状态(Running):就绪状态的线程获取了CPU,执行程序代码。
4.阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。
5.死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。
8、wait方法被调用时,所在线程是否会释放所持有的锁资源? sleep方法呢?
wait:释放CPU,释放锁;
sleep:释放CPU,不释放锁。
最后,创作不易,请大家多多支持我,点点关注不迷路,转发评论工作顺利呀!
java线程池的面试题_献给准备面试的你,Java线程and线程池面试题小结相关推荐
- java线程池原理简答_面试官让我讲讲Java线程池的实现原理,我笑了...
期待与你,一起进步 随着cpu核数越来越多,不可避免的利用多线程技术以充分利用其计算能力.所以,多线程技术是服务端开发人员必须掌握的技术. 线程的创建和销毁,都涉及到系统调用,比较消耗系统资源,所以就 ...
- java线程池需要shutdown吗_公用线程池要不要shutdown?
最近学习了线程过后,又想学学线程池,在写测试代码的时候想到一个问题,线程太多可能会导致内存占满的问题,那线程池要不要关闭呢?怎么关闭呢? 已知关闭有两种方法,shutdown()和shutdownNo ...
- 如何查找历史线程阻塞原因_吊打面试官!Java多线程并发 108 道题,你能答对多少?...
多线程并发108题 1.Java中实现多线程有几种方法 2.继承Thread 类 3.实现Runnable 接口. 4.ExecutorService. Callable. Future 有返回值线程 ...
- 线程池传递对象参数_一次线程池参数错误引起的线上故障
在JAVA里,我们通常会把没有前后依赖关系的逻辑操作扔到多个线程里并行执行,以提高代码运行效率. 同时,我们一般也不会单独显式创建线程,而是通过线程池设置线程.使用线程池的好处是减少在创建和销毁线程上 ...
- mysql 线程池源码模块_易语言Mysql线程池2.0模块源码
易语言Mysql线程池2.0模块源码 易语言Mysql线程池2.0模块源码 系统结构:GetThis,初始化,关闭类线程,线程_测试,其他_附加文本,连接池初始化,取mysql句柄,释放mysql句柄 ...
- java 线程池控制多线程_Java多线程开发系列之四:玩转多线程(线程的控制1)...
在前文中我们已经学习了:线程的基本情况.如何创建多线程.线程的生命周期.利用已有知识我们已经可以写出如何利用多线程处理大量任务这样简单的程序.但是当应用场景复杂时,我们还需要从管理控制入手,更好的操纵 ...
- 关于线程池的五种实现方式,中软国际Java机试
在这里,还有创建一个只有单个线程的可以定时执行线程池(Executors.newSingleThreadScheduledExecutor())这些都是上面的线程池扩展开来了,不详细介绍了. 3 介绍 ...
- java 多线程 并发 面试题_最常见的15个Java多线程,并发面试问题
假设你有三个线程T1,T2,T3.你如何能保证线程T2在线程T1后运行,T3在T2后运行 这个线程面试问题大多是在第一轮或电话筛选轮次中会被问到的,这个多线程问题的目的是检查候选人对"joi ...
- 线程池用过吗?ThreadPoolExecutor谈谈你的理解? —— 为什么用线程池?优势?|| 线程池如何使用?
为什么用线程池?优势? 线程池如何使用?
最新文章
- linux小知识之硬盘健康状态检测
- 2.Vivado软件基础操作
- 采用web技术开发PC应用
- DirectShow开发快速入门之慨述
- android 开关数据连接电脑,Android网络数据开关用法简单示例
- aws lambda使用_使用AWS Lambda的CloudWatch事件通知
- LeetCode 1091. 二进制矩阵中的最短路径(BFS)
- HttpResponse 类
- 十年码农的肺腑之言:“技术不是万能”
- Code Style of Mangata
- LeetCode之根据字符出现频率排序
- 仪表指针样式_PPT标准图表太丑?试试仪表盘图表!
- Android studio显示红叉,提示Error:please select android sdk
- 多项式乘法 快速傅里叶变换
- 日本多城现共享单车 日网友:感受到中国式刺激
- sb 讲解 (!(~+[])+{})[--[~+][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]]
- linux中 #chmod –R 777 * 是什么意思
- JS 动画基础: 细说 requestAnimationFrame
- 通过ip无法获得计算机名称,电脑获取不到IP地址如何解决
- 质量管理 - 成熟度常见模型
热门文章
- 2019数据分析师必备资源(想成为数据分析师的点进来看看吧,小白也能看得懂嗷)
- ios 计算label宽度(高度)出错在iPhone5s、iphone6上出错
- pytorch学习——DCGAN——生成动漫人物头像
- vue项目 热更新慢
- SSM毕设项目大型零售电商平台——购物车管理子系统6voh8(java+VUE+Mybatis+Maven+Mysql)
- css画布背景_如何使用CSS和触摸JavaScript构建画布外菜单
- 安卓开发工程师面试题!十多家大厂Android面试真题锦集干货整理,好文推荐
- 智能手机场景展示音乐可视化AE模板
- 玩转云端 | 看天翼云iBox智能盒子如何实现边缘侧的“神机妙算”
- 现代化城市治理体系的创建,城市大脑至关重要