java中关于线程的常见面试题

本文详细解释了线程的概念及线程与进程的区别,并对比了Java中Runnable与Callable的不同之处,以及Thread类中的start和run方法的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、什么是线程?

线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。

2、线程和进程有什么区别?

线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。别把它和栈内存搞混,每个线程都拥有单独的栈内存用来存储本地数据。

在语言层面有两种方式。ng.Thread 类的实例就是一个线程但是它需要调用ng.Runnable接口来执行,由于线程类本身就是调用的Runnable接口所以你可以继承ng.Thread 类或者直接调用Runnable接口来重写run方法实现线程。

3、Thread 类中的start 和 run 方法有什么区别?

这个问题经常被问到,但还是能从此区分出面试者对Java线程模型的理解程度。start方法被用来启动新创建的线程,而且start内部调用了run方法,这和直接调用run方法的效果不一样。当你调用run方法的时候,只会是在原来的线程中调用,没有新的线程启动,start方法才会启动新线程。

4、Java中Runnable和Callable有什么不同?

Runnable和Callable都代表那些要在不同的线程中执行的任务。Runnable从JDK1.0开始就有了,Callable是在JDK1.5增加的。它们的主要区别是Callable的 call 方法可以返回值和抛出异常,而Runnable的run方法没有这些功能。Callable可以返回装载有计算结果的Future对象。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值