声明:本系列大多是翻译自https://www.javatpoint.com,加上自己的增删改,尽力写的系统而通俗易懂,后文不再重复声明。
点我跳过黑哥的卑鄙广告行为,进入正文。
Java多线程系列更新中~
正式篇:
- Java多线程(一) 什么是线程
- Java多线程(二)关于多线程的CPU密集型和IO密集型这件事
- Java多线程(三)如何创建线程
- Java多线程(四)java中的Sleep方法
- Java多线程(五)线程的生命周期
番外篇(神TM番外篇):
Java的多线程是一个同时执行多个线程的过程。
线程是一个轻量级的子进程,是最小的处理单元。多线程和多进程都用于实现多任务处理。
但是,我们使用多线程而不是多进程,因为线程使用共享内存区域,它们不分配单独的内存区域以节省内存,而且线程之间上下文切换比进程花费的时间更少。
用一个东西之前,总得了解一下它的优点,这样才有动力看下去,这里我们先看一下多线程的优点。
Java多线程的优点
- 它不会阻塞用户,因为线程是独立的,你可以同时执行多个操作,举个栗子,你需要一个延时,等待三秒钟再进行接下来的操作,如果你使用单线程,它就真的等了你三秒,这三秒,啥都不干,啥都得放一边,就等。。。这明显是不可接受的。
- 你可以同时执行多个操作,节省时间。这里面又牵扯到CPU密集型和IO密集型的问题,可以看这篇文章:关于多线程的CPU密集型和IO密集型这件事
- 线程是独立的,死掉一个,不影响另一个。
多任务处理
多任务处理是同时执行多个任务的过程,我们使用多任务处理来尽可能增大CPU的利用率。多任务处理可以通过两种方式实现,没错,多线程和多进程。
1.多进程
- 每个进程在内存中有一个地址,分配一个单独的内存区域
- 进程是重量级的
- 通信成本比较高
- 切换进程需要一些时间来保存和加载寄存器,内存映射等
2.多线程
- 线程共享相同的地址空间
- 轻量级
- 通信成本比较低
什么是JAVA中的线程
线程是一个轻量级的子进程,是最小的处理单元。如下图:
一个系统下可以有多个进程,一个进程中又有多个线程。
JAVA Thread类
Java提供了Thread类来实现线程编程,至于怎么做,且看下文。