Java 线程热门面试题练习 Java 语言一个重要的特点就是内置了对并发的支持,让Java 大受企业和程序员的欢迎。大多数待遇丰厚的 Java 开发职位都要求开发者精通多线程技术并且有丰富的 Java 程序开发、调试、优化经验,所以线程相关的问题在面试中常常会被提到。 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,假如一个线程完成一个任务要 100 毫秒,那么用十个线程完成改任务只需 10 毫秒。Java 在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点。 2) 线程和进程有什么区别? 线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。别把它和栈内存搞混,每个线程都拥有单独的栈内存用来存储本地数据。 3) 如何在 Java 中实现线程? 在语言层面有两种方式。java.lang.Thread 类的实例就是一个线程但是它需要调用 java.lang.Runnable 接口来执行,由于 线 程 类 本 身 就 是 调 用 的 Runnable 接 口 所 以 你 可 以 继 承java.lang.Thread 类或者直接调用 Runnable 接口来重写 run方法实现线程。更多详细信息请这里. 4) 用 Runnable 还是 Thread? 这个问题是上题的后续,大家都知道我们可以通过继承Thread 类或者调用 Runnable 接口来实现线程,问题是,那个方法更好呢?什么情况下使用它?这个问题很容易回答,假如你知道 Java 不支持类的多重继承,但允许你调用多个接口。所以假如你要继承其他类,当然是调用 Runnable 接口好了。 6) Thread 类中的 start 和 run 方法有什么区别? 这个问题常常被问到,但还是能从此区分出面试者对 Java线程模型的理解程度。start 方法被用来启动新创建的线程,而且 start 内部调用了 run 方法,这和直接调用 run 方法的效果不一样。当你调用 run 方法的时候,只会是在原来的线程中调用,没有新的线程启动,start 方法才会启动新线程。 7) Java 中 Runnable 和 Callable 有什么不同? Runnable 和 Callable 都代表那些要在不同的线程中执行的任务。Runnable 从 JDK1.0 开始就有了,Callable 是在 JDK1.5增加的。它们的主要区别是 Callable 的 call 方法可以返回值...