java多线程面试题汇总

资源来源:http://www.importnew.com/12773.html

1.线程是什么?

  线程被包含在进程之中,是进程中的实际运行单位,是操作系统中可以进行运算调度的最小单位。

2.进程是什么?

  进程是是一个执行中的程序,是cpu资源分配的最小单位(线程是cpu调度的最小单位),进程中的线程共享进程的上下文环境。

3.线程和进程的区别?

  每个进程使用不同的内存空间,而进程内的所有线程共享一片相同的内存空间。

4.Thread类的run()和start()方法的区别?

  threadDemo.run()跟普通的调用方法是一样的,程序会按顺序执行,等run方法执行结束之后,才可以继续往下执行下面的代码。

  通过threadDemo.start()来启动一个线程,真正的实现了多线程,不用等到run()方法题结束就可以继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程, 这时此线程是处于就绪状态, 并没有运行。 然后通过此Thread类调用方法run()来完成其运行操作的, 这里方法run()称为线程体,它包含了要执行的这个线程的内容, Run方法运行结束, 此线程终止。然后CPU再调度其它线程。

5.Runnable比Thread具有的优势

  1.适合实现资源共享

  2.可以避免java中的单继承问题

  3.增加程序的健壮性,代码可以被多个程序共享,代码和数据独立。

6.Runnable和Callable的区别?

  Callable是jdk1.5之后出现的,Callable可以返回值和抛出异常,但是Runnable不可以。

原文地址:https://www.cnblogs.com/Zchaowu/p/7461182.html