各大公司Java面试题超详细总结
1.2 ThreadPoolExecutor 的内部事变道理有了以上界说好的数据,下面来看看内部是怎样实现的 。 Doug Lea 的整个思绪总结起来就是 5 句话:
Executor包布局 ![]() ![]() ![]() CopyOnWriteArrayList : 写时加锁,当添加一个元素的时辰,将原本的容器举办copy,复制出一个新的容器,然后在新的容器内里写,写完之后再将原容器的引用指向新的容器,而读的时辰是读旧容器的数据,以是可以举办并发的读,但这是一种弱同等性的计策。行使场景:CopyOnWriteArrayList得当行使在读操纵远宏大于写操纵的场景里,好比缓存。 Linux常用呼吁:cd,cp,mv,rm,ps(历程),tar,cat(查察内容),chmod,vim,find,ls 死锁的须要前提
办理死锁,第一个是死锁提防,就是不让上面的四个前提同时创立。二是,公道分派资源。三是行使银行家算法,假如该历程哀求的资源操纵体系剩余量可以满意,那么就分派。 历程间的通讯方法
数据库事宜是指作为单个逻辑事变单位执行的一系列操纵。 ![]() 交情链接: Hibernate的一级缓存是由Session提供的,因此它只存在于Session的生命周期中,当措施挪用save(),update(),saveOrUpdate()等要领 及挪用查询接口list,filter,iterate时,如Session缓存中还不存在响应的工具,Hibernate会把该工具插手到一级缓存中,当Session封锁的时辰缓存也会消散。 Hibernate的一级缓存是Session所内置的,不能被卸载,也不能举办任何设置一级缓存回收的是key-value的Map方法来实现的,在缓存实体工具时,工具的首要害字ID是Map的key,实体工具就是对应的值。 Hibernate二级缓存:把得到的全部数据工具按照ID放入到第二级缓存中。Hibernate二级缓存计策,是针对付ID查询的缓存计策,删除、更新、增进数据的时辰,同时更新缓存。 历程和线程的区别: 历程:每个历程都有独立的代码和数据空间(历程上下文),历程间的切换会有较大的开销,一个历程包括1–n个线程。 线程:统一类线程共享代码和数据空间,每个线程有独立的运行栈和措施计数器(PC),线程切换开销小。 线程和历程一样分为五个阶段:建设、停当、运行、阻塞、终止。 多历程是指操纵体系能同时运行多个使命(措施)。 多线程是指在统一措施中有多个次序流在执行。 在java中要想实现多线程,有三种本领,一种是继承Thread类,其它一种是实现Runable接口,尚有就是实现Callable接口。 Switch可否用string做参数? a.在 Java 7 之前,switch 只能支持byte,short,char,int 可能其对应的封装类以及 Enum 范例。在Java 7中,String 支持被加上了。 Object有哪些公用要领? a.要领equals测试的是两个工具是否相称 b.要领clone举办工具拷贝 c.要领getClass返回和当前工具相干的Class工具 d.要领notify,notifyall,wait都是用来对给定工具举办线程同步的 Java的四种引用,强弱软虚,以及用到的场景 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |