什么叫线程

是操作系统中可调度任务最小单位,在JVM中可以一个进程能够运行多个线程分别执行不同的任务

进程和线程的区别

进程是资源分配最小单位
线程是程序执行的最小单位

多线程CPU切换概念

对于如果使用单核cpu服务器,开启多线程的情况下,并不是真正意义上的多线程,因为单核cpu服务器在同一个

时刻最多只能运行一个线程,当正在运行的线程快速切换到另外一个线程执行,这个过程我们可以称之为Cpu切换。

同步和异步

同步:指必须等待全部执行完才能执行后续的行为。
异步:方法调用会理解返回,调用者可以继续后续的操作

串行、并行、并发区别

并发是指一个处理器同时处理多个任务。
并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。

举个例子(这里将人比作CPU):

串行:多个任务一个一个执行
并行:多个任务同时多个人干
并发:多个任务一个人干,但是是交替的干着

线程使用场景

1.客户端开发(移动/APP端)、GUI程序

2.异步发送短信、邮件、写日志

3.耗时长的代码

4.多线程下载

5.网络通讯

6.大部分中间件技术采用多线程

多线程安全三大特性

编写多线程程序下,要保证3大特性:

原子性:一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。

可见性:当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。

有序性:在不影响程序运行结果的情况下,JVM会对程序优化,调整代码的顺序,也叫做指令重排序。