什么是进程
百度百科中对进程的解释如下:
进程: 操作系统结构的基础,是一次程序的执行,是一个程序及其数据在处理机上顺序执行时所发生的活动;是程序在一个数据集合上运行的过程,它是操作系统进行资源分配和调度的一个独立单位
可以将一个正在操作系统中运行的exe理解成一个进程;
线程:
进程中独立运行的子任务;
什么是线程
一个进程正在运行时至少有一个线程在运行;
百度百科这样说:
线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。 线程是独立调度和分派的基本单位。线程可以为操作系统内核调度的内核线程,如Win32线程;由用户进程自行调度的用户线程,如Linux平台的POSIX Thread;或者由内核与用户进程,如Windows 7的线程,进行混合调度。
线程之间可以进行资源共用,进程之间不能资源共享
我们比较熟悉的main方法是由jvm创建的名称为main的线程,线程名字为main仅仅和main方法名称相同而已
有没有遇到过自己编写的程序在处理一个请求时不能再处理其它请求?springboot应用默认使用的也是单线程。
多线程为什么难?
线程的使用并不像其它类型代码般,写一句话就会立马生效,线程在java中是一个既复杂又有点模糊的概念,比如:
启动线程线程并不一定会立即执行,只是进入可执行状态,由cpu调度执行
优先启动的线程不一定先执行
线程的优先级设定只能说明该线程在大部分情况是符合这个优先级的,优先级具有随机性
多线程具有不可预知性,只有尽可能多的熟悉和掌握可能出现的请款,才能更加灵活的运用多线程技术。