java 线程池机制的原理是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 线程池机制的原理是啥?相关的知识,希望对你有一定的参考价值。

  线程池属于对象池.所有对象池都具有一个非常重要的共性,就是为了最大程度复用对象.那么线程池的最
  重要的特征也就是最大程度利用线程.
  首先,创建线程本身需要额外(相对于执行任务而必须的资源)的开销.
  作业系统在每创建一个线程时,至少需要创建以下资源:
  (1) 线程内核对象:用于对线程上下文的管理.
  (2) 用户模式执行栈.
  (3) 内核模式执行栈.
  这些资源被线程占有后作业系统和用户都无法使用.
  相反的过程,销毁线程需要回收资源,也需要一定开销.
  其次,过多的线程将导致过度的切换.线程切换带来的性能更是不可估量.系统完成线程切换要经过以下过程:
  (1) 从用户模式切换到内核模式.
  (2) 将CPU寄存器的值保存到当前线程的内核对象中.
  (3)打开一个自旋锁,根据调度策略决定下一个要执行的线程.释放自旋锁,如果要执行的线程不是同一进
  程中的线程,还需要切换虚拟内存等进程环境.
  (4) 将要执行的线程的内核对象的值写到CPU寄存器中.
  (5) 切换到用户模式执行新线程的执行逻辑.
  所以线程池的目的就是为了减少创建和切换线程的额外开销,利用已经的线程多次循环执行多个任务从而提
  高系统的处理能力.
参考技术A  线程池属于对象池.所有对象池都具有一个非常重要的共性,就是为了最大程度复用对象.那么线程池的最
  重要的特征也就是最大程度利用线程.
  首先,创建线程本身需要额外(相对于执行任务而必须的资源)的开销.
  作业系统在每创建一个线程时,至少需要创建以下资源:
  (1) 线程内核对象:用于对线程上下文的管理.
  (2) 用户模式执行栈.
  (3) 内核模式执行栈.
  这些资源被线程占有后作业系统和用户都无法使用.
  相反的过程,销毁线程需要回收资源,也需要一定开销.
  其次,过多的线程将导致过度的切换.线程切换带来的性能更是不可估量.系统完成线程切换要经过以下过程:
  (1) 从用户模式切换到内核模式.
  (2) 将CPU寄存器的值保存到当前线程的内核对象中.
  (3)打开一个自旋锁,根据调度策略决定下一个要执行的线程.释放自旋锁,如果要执行的线程不是同一进
  程中的线程,还需要切换虚拟内存等进程环境.
  (4) 将要执行的线程的内核对象的值写到CPU寄存器中.
  (5) 切换到用户模式执行新线程的执行逻辑.
  所以线程池的目的就是为了减少创建和切换线程的额外开销,利用已经的线程多次循环执行多个任务从而提
  高系统的处理能力.
参考技术B cpu时间片,通过切分cpu的调度时间,从而让每个线程都感觉自己在独占cpu一样,达到多线程编程目的本回答被提问者采纳

蚂蚁三面面经(java开发岗):Java锁机制+JVM+线程池+事务+中间件

蚂蚁金服专场



01

蚂蚁金服一面



1、HaspMap底层原理?HaspTable和ConcurrentHashMap他们之间的相同点和不同点?

2、由上题提到锁的问题

3、MySQL的表锁&行锁&乐观锁&悲观锁,各自的使用场景

4、Java线程锁有哪些,各自的优劣势

5、事务四大特性

6、事务的二段提交机制?

7、聚簇索引&非聚簇索引

8、G1回收器讲下回收过程

9、Tcp三次握手,四次挥手大概讲一下?

10、类加载过程

11、双亲委派机制及使用原因

12、JVM GC算法有哪些,目前的JDK版本采用什么回收算法

13、Http&Https的区别

14、Https的加密方式

15、线程池的核心参数和基本原理

16、线程池的调优策略

17、问问题(你有什么职业规划)



02

蚂蚁金服二面



1、 java 什么时候发生死锁

2、如何避免死锁

3、 B+ 树的原理

4、分布式一致性协议,二段、三段、TCC,优缺点

5、分布式架构与微服务的关系

6、DNS解析过程

7、线程池实现过没?

8、Spring IOC、AOP

9、SpringBoot、SpringCloud的一些应用

10、ACID CAP BASE理论,以及RPC过程。

11、问问题(你有什么职业规划)没错,每个面试官都要问这个问题,三面也是


03

蚂蚁金服三面(P9面试)



1、项目中用的中间件的理解(Dubbo、MQ、Redis、kafka、zookeep)

2、参与过类似秒杀的项目?你认为这样的项目挑战在哪里,怎么解决

3、项目中遇到的最大问题和解决策略

4、生活中遇到的最大的挫折

5、生活中遇到的最大的令你最有成就感的事情

6、问问题(你有什么职业规划)



-end-





以上是关于java 线程池机制的原理是啥?的主要内容,如果未能解决你的问题,请参考以下文章

线程池工作机制

Java 并发编程——Executor框架和线程池原理

Java 并发编程线程池机制 ( 线程池示例 | newCachedThreadPool | newFixedThreadPool | newSingleThreadExecutor )

Java线程池机制

Java 并发编程线程池机制 ( 线程池阻塞队列 | 线程池拒绝策略 | 使用 ThreadPoolExecutor 自定义线程池参数 )

java线程池原理