java多线程是java中重要知识点,很多在面试java中,多线程知识点是必考的,那为了大家能够顺利的通过java面试,今天我们就给大家分享一些java多线程面试重点题,帮助大家快速通过面试!
1.为什么要使用多线程?
提高执行效率,减少程序的响应时间。因为单线程执行的过程只有一个有效的操作序列,如果某个操作很耗时(或等待网络响应),此时程序就不会响应鼠标和键盘等操作,如果使用多线程,就可以将耗时的线程分配到一个单独的线程上执行,从而使程序具备更好的交互性。
与进程相比,线程的创建和切换开销更小。因开启一个新的进程需要分配独立的地址空间,建立许多数据结构来维护代码块等信息,而运行于同一个进程内的线程共享代码段、数据段、线程的启动和切换的开销比进程要少很多。同时多线程在数据共享方面效率非常高。
目前市场上服务器配置大多数都是多CPU或多核计算机等,它们本身而言就具有执行多线程的能力,如果使用单个线程,就无法重复利用计算机资源,造成资源浪费。因此在多CPU计算机上使用多线程能提高CPU的利用率。
利用多线程能简化程序程序的结构,是程序便于理解和维护。一个非常复杂的进程可以分成多个线程来执行。
2.线程类的一些常用方法有哪些?
sleep():强迫一个线程睡眠N毫秒;
isAlive():判断一个线程是否存活;
join():线程插队;
activeCount():程序中活跃的线程数;
enumerate():枚举程序中的线程;
currentThread():得到当前线程;
isDeamon():一个线程是否为守护线程;
setName():为线程设置一个名字;
wait():线程等待;
notify():唤醒一个线程;
setPriority():设置一个线程的优先级;
3.线程与进程的区别?
进程是指一段正在执行的程序。而线程有时也被称为轻量级进程,它是程序执行的最小单元,一个进程可以拥有多个线程,各个线程之间共享程序的内存空间(代码段、数据段、堆空间)及一些进程级的文件(列如:打开的文件),但是各个线程拥有自己的栈空间。在操作系统级别上,程序的执行都是以进程为单位的,而每个进程中通常都会有多个线程互不影响地并发执行。
4.终止线程的方法有哪些?
stop()方法,它会释放已经锁定的所有监视资源,如果当前任何一个受监视资源保护的对象处于一个不一致的状态(执行了一部分),其他线程线程将会获取到修改了的部分值,这个时候就可能导致程序执行结果的不确定性,并且这种问题很难被定位。
suspend()方法,容易发生死锁。因为调用suspend()方法不会释放锁,这就会导致此线程挂起。
鉴于以上两种方法的不安全性,Java语言已经不建议使用以上两种方法来终止线程了。
一般建议采用的方法是让线程自行结束进入Dead状态。一个线程进入Dead状态,既执行完run()方法,也就是说提供一种能够自动让run()方法结束的方式,在实际中,我们可以通过flag标志来控制循环是否执行,从而使线程离开run方法终止线程。
这些都是多线程知识重点,大家一定要掌握好多线程的相关知识,只有全都掌握了,才能成功面试java岗位哦!最后大家如果想要了解更多java面试题知识,敬请关注奇Q工具网。
推荐阅读: