Java面试题——线程及异常篇(持续更新中)

2018-12-11 00:44:21  卢浮宫  版权声明:本文为站长原创文章,转载请写明出处


一、前言

    承接上文Java面试题--基础篇,这里就直接进入主题了。


二、本文适用主体为初级Java面试,后面会一步步深入,持续更新中。内容如下:

    1、final,finally,finalize的区别

            答案:①final用于声明属性、方法和类,标识属性不可变,方法不可覆盖,类不可继承。

                    ②finally是异常捕获处理中的一部分,是总是执行的。

                    ③finalize是Object中的一个方法,在立即回收器执行时被调用。


    2、举例运行是异常(run time exception)

           答案:Null point Exception(空指针异常) 、ArryINdexOutOfBounds(数组下标越界)、ClassCastException(强制类型转换异常)、

                    ArrayStoreException(数据存储异常,操作数组时类型不一致)、BufferOverflowException(还有IO操作的,缓冲溢出异常)。


     3、异常捕获中的释义

            答案:①完成的包含四部分:throws、try、catch、finally。

                    ②分别代表:捕获异常并抛出、需异常处理代码部分、捕获异常并自定义处理、最后执行部分。


    4、Java中创建线程的几种方式

            答案:①继承Thread类重写run()方法。

                    ②实现并调用Runnable的run()方法。

                    ③使用Callable和Future创建线程


    5、开启线程是用run()方法还是用star()方法

            答案:①采用star()方法。

                    ②run()只是线程关联的执行代码,star是开启线程的同时会运行run()方法。


    6、Java线程中sleep()和wait()的区别

            答案:①sleep()表示线程会暂停执行的时间,把执行的机会让给其他线程。但是该线程的监控状态依然会保持,等到时间结束会自动回复执行。

                    ②wait是Object中的方法,是指线程放弃对象锁进入等待该对象的等待锁定池。只有针对该对象发出notify或notifyAll后才会获取对象锁进入运行状态。

                    ③sleep()方法不会释放对象锁,wait()方法释放了对象锁。


    7、同步和异步的区别,分别在什么情况下执行

            答案:①同步可以简单理解为同时加载数据资源,异步则是根据需求先后加载数据资源。

                    ②如果数据再线程之间用共享情况(即:两个或多个线程对同一数据用操作)这时用同步。

                    ③当程序调用了一个耗费时间很长的方法,且不希望让程序等待该方法执行完成后再操作时用异步。




更多精彩请关注guangmuhua.com


最新评论: