加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营 > 正文

各大公司Java后端开发面试题总结

发布时间:2020-12-31 15:31:19 所属栏目:运营 来源:网络整理
导读:ThreadLocal(线程变量副本)Synchronized实现内存共享,ThreadLocal为每个线程维护一个当地变量。回收空间换时刻,它用于线程间的数据断绝,为每一个行使该变量的线程提供一个副本,每个线程都可以独立地改变本身的副本,而不会和其他线程的副本斗嘴。ThreadL

线程池自己的状态:

守候使命行列和事变集:

线程池的首要状态锁:

线程池的存活时刻和巨细:

1.2 ThreadPoolExecutor 的内部事变道理有了以上界说好的数据,下面来看看内部是怎样实现的 。 Doug Lea 的整个思绪总结起来就是 5 句话:

  1. 假如当前池巨细 poolSize 小于 corePoolSize ,则建设新线程执利用命。
  2. 假如当前池巨细 poolSize 大于 corePoolSize ,且守候行列未满,则进入守候行列
  3. 假如当前池巨细 poolSize 大于 corePoolSize 且小于 maximumPoolSize ,且守候行列已满,则建设新线程执利用命。
  4. 假如当前池巨细 poolSize 大于 corePoolSize 且大于 maximumPoolSize ,且守候行列已满,则挪用拒绝计策来处理赏罚该使命。
  5. 线程池里的每个线程执行完使命后不会立即退出,而是会去搜查下守候行列里是否尚有线程使命必要执行,假如在 keepAliveTime 里等不到新的使命了,那么线程就会退出。

Executor包布局

CopyOnWriteArrayList : 写时加锁,当添加一个元素的时辰,将原本的容器举办copy,复制出一个新的容器,然后在新的容器内里写,写完之后再将原容器的引用指向新的容器,而读的时辰是读旧容器的数据,以是可以举办并发的读,但这是一种弱同等性的计策。行使场景:CopyOnWriteArrayList得当行使在读操纵远宏大于写操纵的场景里,好比缓存。


Linux常用呼吁:cd,cp,mv,rm,ps(历程),tar,cat(查察内容),chmod,vim,find,ls


死锁的须要前提

  1. 互斥 至少有一个资源处于非共享状态
  2. 占据并守候
  3. 非抢占
  4. 轮回守候

办理死锁,第一个是死锁提防,就是不让上面的四个前提同时创立。二是,公道分派资源。三是行使银行家算法,假如该历程哀求的资源操纵体系剩余量可以满意,那么就分派。


历程间的通讯方法

  1. 管道( pipe ):管道是一种半双工的通讯方法,数据只能单向活动,并且只能在具有亲缘相关的历程间行使。历程的亲缘相关凡是是指父子历程相关。
  2. 著名管道 (named pipe) : 著名管道也是半双工的通讯方法,可是它应承无亲缘相关历程间的通讯。
  3. 信号量( semophore ) : 信号量是一个计数器,可以用来节制多个历程对共享资源的会见。它常作为一种锁机制,防备某历程正在会见共享资源时,其他历程也会见该资源。因此,首要作为历程间以及统一历程内差异线程之间的同步本领。
  4. 动静行列( message queue ) : 动静行列是由动静的链表,存放在内核中并由动静行列标识符标识。动静行列降服了信号转达信息少、管道只能承载无名目字节约以及缓冲区巨细受限等弱点。
  5. 信号 ( sinal ) : 信号是一种较量伟大的通讯方法,用于关照吸取历程某个变乱已经产生。
  6. 共享内存( shared memory ) :共享内存就是映射一段能被其他历程所会见的内存,这段共享内存由一个历程建设,但多个历程都可以会见。共享内存是最快的 IPC 方法,它是针对其他历程间通讯方法运行服从低而专门计划的。它每每与其他通讯机制,如信号量,共同行使,来实现历程间的同步和通讯。
  7. 套接字( socket ) : 套解口也是一种历程间通讯机制,与其他通讯机制差异的是,它可用于差异呆板间的历程通讯。
  8. Java进修交换QQ群:589809992 我们一路学Java!


数据库事宜是指作为单个逻辑事变单位执行的一系列操纵。

交情链接:



(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读