首页 课程 师资 教程 报名

最全多线程编程java面试题

  • 2019-07-19 11:28:46
  • 3307次 动力节点


多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域。所以,学好多线程并发编程对Java程序员来说极其重要的。下面动力节点java学院小编整理了60道最常见的Java多线程面试题及答案,供你学习或者面试参考。


1.多线程使用的优缺点?


优点:


(1)多线程技术使程序的响应速度更快

(2)当前没有进行处理的任务可以将处理器时间让给其它任务

(3)占用大量处理时间的任务可以定期将处理器时间让给其它任务

(4)可以随时停止任务

(5)可以分别设置各个任务的优先级以及优化性能


缺点:


(1)等候使用共享资源时造成程序的运行速度变慢

(2)对线程进行管理要求额外的cpu开销

(3)可能出现线程死锁情况。即较长时间的等待或资源竞争以及死锁等症状。


1.start()方法和run()方法简介和区别?


start()方法:


1)用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。

2)通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到CPU时间片,就开始执行run()方法。


run()方法:


1)run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条。

总结:

1)调用start方法方可启动线程,

2)而run方法只是thread的一个普通方法调用,还是在主线程里执行。

3)把需要并行处理的代码放在run()方法中,start()方法启动线程将自动调用run()方法,这是由jvm的内存机制规定的。

4)并且run()方法必须是public访问权限,返回值类型为void。


最全多线程编程java面试题


2.Runnable接口和Callable接口的相同点和不同点?


Lock和synchronized对比?


1)Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现;

2)synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而Lock在发生异常时,如果没有主动通过unLock()去释放锁,则很可能造成死锁现象,因此使用Lock时需要在finally块中释放锁;

3)Lock可以让等待锁的线程响应中断,而synchronized却不行,使用synchronized时,等待的线程会一直等待下去,不能够响应中断;

4)通过Lock可以知道有没有成功获取锁,而synchronized却无法办到。

5)Lock可以提高多个线程进行读操作的效率。

6)在JDK1.5中,synchronized是性能低效的。因为这是一个重量级操作,它对性能最大的影响是阻塞式的实现,挂起线程和恢复线程的操作都需要转入内核态中完成,这些操作给系统的并发性带来了很大的压力。相比之下使用Java提供的Lock对象,性能更高一些。


但是,JDK1.6,发生了变化,对synchronize加入了很多优化措施,有自适应自旋,锁消除,锁粗化,轻量级锁,偏向锁等等。导致在JDK1.6上synchronize的性能并不比Lock差。因此。提倡优先考虑使用synchronized来进行同步。


更多java面试题请关注动力节点java学院官网。


选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交