什么是进程,什么是线程,进程和线程有什么区别?
答:进程是资源调度的最小单位,而线程是CPU调度的最小单位。一个程序下至少有一个进程,一个进程下面至少有一个线程,而一个进程下也开启多个线程来提高执行效率,这就是所谓的多线程。
说说对并行的理解?
答:并行是在单位时间内,多个处理器或者多核处理器同时处理多个任务,几个任务同时执行,是属于不同实体上的多个事件。
说说对并发的理解?
答:并发是指多个任务在同一个CPU上执行,然后按照划分时间片来交替执行,在同一个时间段内,多个任务都在执行,是属于相同实体上的多个事件,并发是为了更好的利用处理器的每个核,以达到更高的性能。
使用多线程可能带来什么问题?
答:内存泄漏、上下文切换、死锁还有受限于硬件和软件的资源闲置问题。
什么是上下文切换?
答:可参考本篇博客【线程的上下文切换指的是什么?】
实现多线程的方式有哪些?
答:继承Thread类,实现Runnable接口,实现Callable接口。
Runnable接口和Callable接口有什么区别?
答:Runnable接口是没有返回值的,Callable接口是有返回值的。根据业务需要选择使用,可以把Callable接口当作是对Runnable接口的一种补充。
用什么方式创建线程比较好?
答:首先能够使用线程池去创建线程是最好的,其次最好不要选择使用继承Thread类方法去创建线程,因为Java是单继承的,使用了这个方法就无法再继承其他类了。然后根据是否需要返回值选择性使用Runnable接口或Callable接口。
Thread类中的start()和run()方法有什么区别?
答:可参考本篇博客【线程直接调run方法和调start方法的区别】
说说线程的生命周期?
答:可参考本篇博客【了解线程的生命周期】
|
|