对于并发来说,一般可以有多进程和多线程两种方式。进程是占用的CPU、内存等系统的基本单位,而线程又是进程的执行单位。多进程的并发对于数据的共享是很困难的,而多线程却相当的容易,因此大多数时候说的并发指的就是多线程。
23.什么是多线程
- 线程是进程中的一个执行单元,又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度。
- 多线程是这样一种机制:它允许在程序中并发执行多个指令流,每个指令流都称为一个线程。多线程机制下的线程彼此间互相独立,比较容易共享数据,通过并发执行的方式来提高程序的效率和性能。
24.解释进程和线程的区别
进程和线程之间的区别主要包括:
- 线程的划分尺度小于进程,线程隶属于某个进程
- 进程是程序的一种动态形式,是CPU、内存等资源占用的基本单位,而线程是不能独立的占有这些资源的
- 进程之间相互独立,通信比较困难,而线程之间共享一块内存区域,通信比较方便
- 进程在执行过程中,包含比较固定的入口、执行顺序和出口,而线程的这些过程会被应用程序所控制
25.解释Runnable接口与Thread类的区别
Runnable接口与Thread类的区别主要包括以下几个方面:
- 线程类继承自Thread则不能继承自其它类,而实现Runnable接口则可以
- 线程类继承自Thread相对于Runnable来说,使用线程的方法更方便一些
- 实现Runnable接口的线程类的多个线程,可以更方便的访问同一变量,而Thread类则需要内部类来进行替代
26.如何使用Java的线程池(最大程度利用线程)
Java提供了java.util.concurrent.ThreadPoolExecutor类来使用线程池,通过它构造的对象,可以很容易的管理线程,并把线程代码与业务代码进行分离