多线程能满足程序员编写高效率的程序来达到充分利用 CPU 的目的,所以对于java来说,多线程肯定是一个重要知识点,而在面试中也经常会问到这些问题,那下面我们就给大家分享一些java多线程与高并发面试题!
1.线程和进程有什么区别?
一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用。而线程是在进程中执行的一个任务。线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。别把它和栈内存搞混,每个线程都拥有单独的栈内存用来存储本地数据。
2.如何在Java中实现线程?
有两种创建线程的方法:一是实现Runnable接口,然后将它传递给Thread的构造函数,创建一个Thread对象;二是直接继承Thread类。
3.为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法?
执行start方法,jvm会调用native方式启动另外一个线程去执行thread的run方法,起到的多线程执行的效果、如果直接执行thread的run方法,相当于在主线程中执行一个普通的run方法。
4.说说并发与并行的区别?
并发:同一时间只有一个线程在执行。多个线程竞争获取CPU的执行片段
并行:同一时间有多个线程在执行。
5.Java中的同步集合与并发集合有什么区别?
同步集合与并发集合都为多线程和并发提供了合适的线程安全的集合,不过并发集合的可扩展性更高。在Java1.5之前程序员们只有同步集合来用且在 多线程并发的时候会导致争用,阻碍了系统的扩展性。Java5介绍了并发集合像ConcurrentHashMap,不仅提供线程安全还用锁分离和内部分 区等现代技术提高了可扩展性。
6.一个线程如果出现了运行时异常怎么办?
如果这个异常没有被捕获的话,这个线程就停止执行了。另外重要的一点是:如果这个线程持有某个某个对象的监视器,那么这个对象监视器会被立即释放。
这些多线程与高并发面试题都是在面试中经常会问到的,其实都是基础知识点,只要我们将相关知识点都掌握了,在进行拓展练习的话,那在面试中肯定是没问题的!最后大家如果想要了解更多Java面试题知识,敬请关注奇Q工具网。
推荐阅读: