多线程面试题总结(基础)

1.jvm虚拟机的启动是单线程的还是多线程的?
多线程,因为垃圾回收线程也要先启动,否则很容易会出现内存溢出。垃圾回收线程加上主线程有两个线程,因此jvm虚拟机的启动是多线程的。
2.并发和并行的区别?
并发是在同一时间段内的同时运行,是逻辑上的同时发生,如一个处理器上同时处理多个任务。
并行是在同一时间点的同时运行,是物理上的同时发生,如多个处理器同时多个任务。
3.线程和进程的区别?
进程是系统进行资源调度的基本单位,一个正在运行的程序就是一个进程,线程是进程的执行路径。
4.守护线程是什么?
守护线程是运行在后台的一种特殊线程。它独立于控制终端并周期性的处理任务或等待处理某些事件的发生。在Java中垃圾回收线程就是特殊的守护线程。
5.创建线程有哪几种方式?
继承 Thread 重写 run 方法;
实现 Runnable 接口;
实现 Callable 接口。
6.说一下 runnable 和 callable 有什么区别?
runnable 没有返回值,callable 可以拿到有返回值,callable 可以看作是 runnable 的补充。
7.线程有哪些状态
新建
就绪
运行
阻塞
死亡
8.sleep()和wait()有什么区别?
sleep()必须指定时间,时间到就会自动唤醒,wait()可以不指定时间,通过notify()唤醒。
sleep()执行后不会释放锁,wait()会释放锁。
sleep()来自Thread类,wait()来自obfect类。
9.线程的 run() 和 start() 有什么区别?
run():封装了被线程执行的代码,直接调用仅仅是普通方法的调用
start():启动线程,并由JVM自动调用run()方法

猜你喜欢

转载自blog.csdn.net/go_to_study/article/details/109299564