进行java面试,会考很多java知识,目的就是看看你掌握java知识的熟练程度,能否胜任java岗位,而java线程作为java中重要知识点,也是面试中必考的,那下面我们就给大家分享一下java线程面试题。
1.什么是线程?
是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
2.线程的实现方式?
继承Thread类;
实现Runnable接口;
使用Callable和Future;
3.线程和进程有什么区别?
线程是进程的子集,一个进程能够有不少线程,每条线程并行执行不一样的任务。不一样的进程使用不一样的内存空间,而全部的线程共享一片相同的内存空间。别把它和栈内存搞混,每一个线程都拥有单独的栈内存用来存储本地数据。
4.Java中Runnable和Callable有什么不一样?
Runnable和Callable都表明那些要在不一样的线程中执行的任务。Runnable从JDK1.0开始就有了,Callable是在JDK1.5增长的。它们的主要区别是Callable的 call() 方法能够返回值和抛出异常,而Runnable的run()方法没有这些功能。Callable能够返回装载有计算结果的Future对象。
5.怎么检测一个线程是否持有对象监视器?
Thread类提供了一个holdsLock(Object obj)方法,当且仅当对象obj的监视器被某条线程持有的时候才会返回true,注意这是一个static方法,这意味着”某条线程”指的是当前线程。
6.怎么唤醒一个阻塞的线程?
如果线程是因为调用了wait()、sleep()或者join()方法而导致的阻塞,可以中断线程,并且通过抛出InterruptedException来唤醒它;如果线程遇到了IO阻塞,无能为力,因为IO是操作系统实现的,Java代码并没有办法直接接触到操作系统。
7.为什么要使用线程池?
避免频繁地创建和销毁线程,达到线程对象的重用。另外,使用线程池还可以根据项目灵活地控制并发的数目。
8.一个线程运行时发生异常会怎样?
简单的说,若是异常没有被捕获该线程将会中止执行。Thread.UncaughtExceptionHandler是用于处理未捕获异常形成线程忽然中断状况的一个内嵌接口。当一个未捕获异常将形成线程中断的时候JVM会使用Thread.getUncaughtExceptionHandler()来查询线程的UncaughtExceptionHandler并将线程和异常做为参数传递给handler的uncaughtException()方法进行处理。
这些都是java线程常考的面试题,我们需要掌握好java线程知识点,这样在面试的时候就不会惧怕!
最后大家如果想要了解更多java面试题知识,敬请关注奇Q工具网。
推荐阅读: