#简介
-
诸多不同活动的同时进行,并发思想;
-
并发完成的每一件事情称之线程;
-
Java多线程在每个操作系统中的运行方式也存在差异;
-
Windows操作系统是多任务操作系统, 它以进程为单位, 一个进程是一个包含有自身地址的程序,每个独立执行的程序都称为进程, 也就是正在执行的程序; -
系统可以分配给每个进程一段有限的CPU使用时间(亦称CPU时间片),CPU在这段时间中执行某个进程, 然后下一个时间片又跳至另一个进程中去执行; -
由于
CPU转换较快, 所以使得每个进程好像是同时执行一样; -
一个
线程则是进程中的执行流程, 一个进程中可以同时包括多个线程, 每个线程也可以得到一小段程序的执行时间, 这样一个进程就可以具有多个并发执行的线程; -
在
单线程中, 程序代码按调用顺序依次往下执行, 如果需要一个进程同时完成多段代码的操作, 就需要产生多线程;
#实现线程的两种方式
- 继承
java.lang.Thread类; - 实现
java.lang.Runnable接口;
具体用法详见01 详析一次腾讯一面 | 移动端开发岗题解中 Java/Android部分
#线程的生命周期
-
线程具有生命周期,其中包含7种状态, 分别为
出生状态, 就绪状态, 运行状态, 等待状态, 休眠状态, 阻塞状态, 死亡状态; -
出生状态: 线程
被创建时所处的状态, 在用户使用该线程实例调用start()方法之前, 线程都处于出生状态; -
就绪状态: 用户调用
start()方法之后, 线程处于就绪状态(又称可执行状态); -
运行状态: 当
线程 得到 系统资源后,进入运行状态;
一旦线程进入了就绪状态, 就会在就绪与运行状态间转换, 同时也可能进入等待、休眠、阻塞或死亡状态;
-
等待状态 当处于运行状态下的线程 调用
Thread类中的wait()方法时, 该线程便进入等待状态, 进入等待状态的线程必须调用Thread类中的notify()方法才能被唤醒, 而notifyAll()方法是将所有处于等待状态下的线程唤醒; -
休眠状态: 当线程调用Thread类中的sleep()方法时, 则会进入休眠状态;
-
阻塞状态: 如果一个线程在
运行状态下发出输入/输出请求``, 该线程进入阻塞状态; 在其等待输入/输出结束`时,线程进入就绪状态,