前两天有个面试,面试官问了我一个单线程和多线程的问题,情境如下:
面试官:你对单线程和多线程有什么看法?
我:
面试官:
我:
面试官:
我
现在先让我们来了解一下进程和线程的基本概念:
进程:
1、进程是程序的一次执行;
2、进程是一个程序及其数据在处理机上顺序执行时所发生的活动;
3、进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个基本单位。
注:进程和程序是不同的概念,进程是动态的,程序是静态的;进程是程序执行的外在表现,是对跑起来的程序的管理。
进程的特征:
1、动态性:进程是程序的执行过程,因此具有动态性。
2、并发性:指进程同时存在内存中,且能够在一段时间内同时运行。(并发强调段,并行强调点)
3、独立性:指进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单位。
4、异步性:指进程按照异步方式运行的,即按各自独立的、不可预知的速度向前推进。
进程的基本状态:
1、就绪态(ready):指进程处于准备好运行的状态,即进程已经得到了除CPU以外所有的必要资源。
2、执行态(running):指进程获得了CPU,其程序正处于执行的状态。
3、阻塞态(block):指正在执行的进程由于发生某事件(如I/0请求、申请缓冲区失败等)暂时无法继续执行时的状态。
进程的三种基本状态的转换:
线程:
问题:
1、为什么有了进程之后,还需要有线程?
一些小知识点:
创建线程的三种方式:https://blog.csdn.net/sinat_27933301/article/details/69944286