多线程面试题

来源:互联网 发布:了不起的盖茨比 知乎 编辑:程序博客网 时间:2024/06/05 03:48

(1) 什么是线程?

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

(2) 线程和进程有什么区别?

线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间


(3) 如何在Java中实现线程?

可以继承java.lang.Thread 类或者直接调用Runnable接口来重写run()方法实现线程。

(4) 用Runnable还是Thread?

Java不支持类的多重继承,但允许你调用多个接口。所以如果你要继承其他类,当然是调用Runnable接口好了

(5)Thread 类中的start() 和 run() 方法有什么区别

start()方法被用来启动新创建的线程,而且start()内部调用了run()方法,这和直接调用run()方法的效果不一样。当你调用run()方法的时候,只会是在原来的线程中调用,没有新的线程启动,start()方法才会启动新线程。

(6)Java中Runnable和Callable有什么不同?

它们的主要区别是Callable的 call() 方法可以返回值和抛出异常,而Runnable的run()方法没有这些功能。Callable可以返回装载有计算结果的Future对象

(7)Java中如何停止一个线程

当run() 或者 call() 方法执行完的时候线程会自动结束,如果要手动结束一个线程,你可以用volatile 布尔变量来退出run()方法的循环或者是取消任务来中断线程







0 0