合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
# 多线程 [TOC] >[success]多线程编程是Java语言最为重要的特性之一,利用多线程技术可以提升单位时间内的程序处理性能,也是现代程序开发中高并发的主要涉及形式。 使用多线程只有一个目的,那就是**更好的利用cpu的资源**。 通俗的讲,就是使用多线程可以同时多个任务 ## 并行和并发 * 并行:多个CPU实例或是多台机器同时执行一段处理逻辑,是真正的同时。 * 并发:通过CUP调度算法,让用户看上去同时去执行,实际上从CPU操作层面并不是真正的同时。并发往往需要公共的资源,对公共资源的处理和线程之间的协调是并发的难点。 ## 进程和线程 * 进程是指可执行程序并存放在计算机存储器的一个指令序列,他是一个程序的动态执行的过程,经历了从代码加载,执行到执行完成的一个完整过程。 * 线程是指进程中的一个执行流程,一个进程中可以运行多个线程,一个线程是一个子进程。 >[info] 案例: > 日常使用电脑,一边写代码一遍听歌,有时候还会去打开微信回复一下朋友的信息 > 这样一个场景,我们使用了三个软件,音乐播放器,代码编辑器和微信。这三个软件同时工作,就是我们的进程在起作用。 早期的操作系统,是单任务操作系统,也就是只有一个程序运行结束后,才能进行下一个程序的执行。而现在的操作系统则多任务操作系统,可以同时运行多个程序。 >[success] 线程相等于子程序,代码可以分成多个代码块,放在多个线程中去执行 >[info] 案例: > 我们使用Eclipse编写代码的时候,Eclipse会在我们代码错误的地方给出红色浪线。每次启动Eclipse对于操作系统而言就是启动了一个系统的进程,而在这个进程上又有其他的子程序(线程)——代码检查。 > 如果关闭Eclipse,代码检查的线程肯定也会关闭,但是如果代码检查的线程消失了,却不一定会让Eclipse的进程消失 ## 时间片机制 多任务操作系统同时运行多个进程(程序),是因为CPU具备分时机制,所以每个进程都能循环获得自己的CPU时间片,由于CPU执行速度非常快,使得所有程序好像是在同时运行一样。 实际上,通俗的理解就是CPU每隔一段时间(这个时间非常短且不一定固定),会将当前进程切换到其他进程,使这些进程轮番穿插运行。 因为这个时间非常短,所以我们会认为这些程序是同时进行的。 ## 主要学习内容 * 线程的创建 * 线程的状态和生命周期 * 线程调度 * 同步和死锁