什么叫线程
是操作系统中可调度任务最小单位,在JVM中可以一个进程能够运行多个线程分别执行不同的任务
进程和线程的区别
进程是资源分配最小单位
线程是程序执行的最小单位
多线程CPU切换概念
对于如果使用单核cpu服务器,开启多线程的情况下,并不是真正意义上的多线程,因为单核cpu服务器在同一个
时刻最多只能运行一个线程,当正在运行的线程快速切换到另外一个线程执行,这个过程我们可以称之为Cpu切换。
同步和异步
同步:指必须等待全部执行完才能执行后续的行为。
异步:方法调用会理解返回,调用者可以继续后续的操作
串行、并行、并发区别
并发是指一个处理器同时处理多个任务。
并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。
举个例子(这里将人比作CPU):
串行:多个任务一个一个执行
并行:多个任务同时多个人干
并发:多个任务一个人干,但是是交替的干着
线程使用场景
1.客户端开发(移动/APP端)、GUI程序
2.异步发送短信、邮件、写日志
3.耗时长的代码
4.多线程下载
5.网络通讯
6.大部分中间件技术采用多线程
多线程安全三大特性
编写多线程程序下,要保证3大特性:
原子性:一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。
可见性:当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。
有序性:在不影响程序运行结果的情况下,JVM会对程序优化,调整代码的顺序,也叫做指令重排序。