更新时间:2020-02-09 11:28:24 来源:极悦 浏览2102次
1)啥是Busyspin?咱们为啥要运用它?
Busyspin是一种在不开释CPU的基础上等候事情的技术。它常常用于防止丢掉CPU缓存中的数据(假如线程先暂停,以后在别的CPU上运转就会丢掉)。所以,假如你的作业要求低推迟,而且你的线程现在没有任何次序,这么你就能够经过循环检查行列中的新消息来替代调用sleep()或wait()办法。它唯一的优点即是你只需等候很短的时刻,如几微秒或几纳秒。LMAX分布式框架是一个高性能线程间通讯的库,该库有一个BusySpinWaitStrategy类即是根据这个概念完成的,运用busyspin循环EventProcessors等候屏障。
2)Java中怎样获取一份线程dump文件?
在Linux下,你能够经过指令kill-3PID(Java进程的进程ID)来获取Java运用的dump文件。在Windows下,你能够按下Ctrl+Break来获取。这么JVM就会将线程的dump文件打印到规范输出或过错文件中,它也许打印在控制台或许日志文件中,具体位置依靠运用的装备。假如你运用Tomcat。
3)Swing是线程安全的?
不是,Swing不是线程安全的。你不能经过任何线程来更新Swing组件,如JTable、JList或JPanel,事实上,它们只能经过GUI或AWT线程来更新。这即是为啥Swing供给invokeAndWait()和invokeLater()办法来获取别的线程的GUI更新恳求。这些办法将更新恳求放入AWT的线程行列中,能够一向等候,也能够经过异步更新直接回来成果。你也能够在参考答案中检查和学习到更具体的内容。
4)啥是线程局部变量?
线程局部变量是局限于线程内部的变量,属于线程自身一切,不在多个线程间同享。Java供给ThreadLocal类来支撑线程局部变量,是一种完成线程安全的办法。可是在办理环境下(如web服务器)运用线程局部变量的时分要格外当心,在这种情况下,作业线程的生命周期比任何运用变量的生命周期都要长。任何线程局部变量一旦在作业完成后没有开释,Java运用就存在内存泄露的危险。
5)用wait-notify写一段代码来解决生产者-消费者疑问?
请参考答案中的示例代码。只需记住在同步块中调用wait()和notify()办法,假如堵塞,经过循环来测验等候条件。
6)用Java写一个线程安全的单例形式(Singleton)?
请参考答案中的示例代码,这里面一步一步教你创立一个线程安全的Java单例类。当咱们说线程安全时,意思是即使初始化是在多线程环境中,依然能保证单个实例。Java中,运用枚举作为单例类是最简略的办法来创立线程安全单例形式的办法。
7)Java中sleep办法和wait办法的差异?
尽管两者都是用来暂停当前运转的线程,可是sleep()实际上仅仅短暂中止,由于它不会开释锁,而wait()意味着条件等候,这即是为啥该办法要开释锁,由于只要这么,别的等候的线程才能在满足条件时获取到该锁。
8)啥是不可变目标(immutableobject)?Java中怎样创立一个不可变目标?
不可变目标指目标一旦被创立,状况就不能再改动。任何修正都会创立一个新的目标,如String、Integer及其它包装类。概况拜见答案,一步一步指导你在Java中创立一个不可变的类。
9)咱们能创立一个包括可变目标的不可变目标吗?
是的,咱们是能够创立一个包括可变目标的不可变目标的,你只需求慎重一点,不要同享可变目标的引证就能够了,假如需求变化时,就回来原目标的一个复制。最常见的比如即是目标中包括一个日期目标的引证。
Java面试总的来说面试无非要做到两点:
1.别人答不上的,你得知道。
2.别人答得上的,你得知道的更多!包括但不限于Java多线程,锁,SSM源码,并发包,各类集合框架,MySQL索引调优,事务,MVCC,Redis相关内容,JVM垃圾回收,内存模型,类加载机制。
以上就是极悦注册机构小编介绍的“途牛高级Java面试题,看看你会多少”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。
相关推荐
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习