1.进程和线程区别:
① 进程是资源(IO设备等)分配的基本单位;线程是处理机调度的最小单位。
② 进程是应用程序的动态实例,基本相互独立,上下文切换成本高;线程存在于进程内,是进程的子集,上下文切换成本低。
③ 进程间通信较复杂,同一台计算机不同进程间通信称IPC,不同计算机进程间通信需要通过网络协议;同个进程内的线程拥有共享空间,通信较简单。
2.并发和并行
并发:一个cpu轮转执行多个线程的时间片,同一时间只有一个线程得到执行,其它挂起。
并行:多个cpu同一时间执行多个线程
3.同步和异步
同步:等待某一事件的返回结果才能继续运行(例:后续计算需要用到子线程的结果,阻塞等待)
异步:不需要等待结果,直接继续运行(例:长时间IO开启新线程去做,主线程继续执行其他任务)
4.多线程的效率
一般情况下多线程能提高多核CPU利用率,提高程序执行效率,单核情况仍是轮流执行。如果是简单的计算开启了大量的线程,频繁的上下文切换甚至可能导致执行效率下降。
例:CPU密集型任务应配置尽可能小的线程,如配置CPU数目+1个线程的线程池。由于IO密集型任务线程并不是一直在执行任务,则应配置尽可能多的线程,如2*CPU数目。
实际线程数目设置需根据jmeter压测调整。