1. 线程:线程就是一个应用程序的执行路径。
从代码的角度来说就是一个接口。
进程和线程:
进程是一个独立的应用程序,每个进程都有自己独立的内存空间。进程之间是不会共享数据的。当关闭一个进程,不影响其他进程。
线程是依赖于进程存在的,多个线程之间是共享同一块内存空间的。一个线程修改了数据,其他线程读取到的就是修改后的数据。
时间片: 一个线程的执行的时间长短就是时间片。
时间片是由操作系统来决定的。一般是6个毫秒左右,不是绝对的。
2.线程的状态:从出生到死亡经历的一些阶段.
1) . 创建状态: 当使用new创建了一个线程对象之后的状态。
2) . 就绪状态: 指调用了start方法之后的状态。注意: 线程调用了start方法之后,并不一定立刻去执行run方法。此时只是准备好了执行,当操作系统分配了时间片之后,线程才会去执行run方法。
3). 运行状态: 指的就是线程正在执行run方法的状态。
4). 中断状态: 指暂时停止执行的状态。当中断状态解除后,线程又处于就绪状态。
5). 死亡状态:指的是run方法执行完毕之后的状态。
3.线程的创建:
两种方式:
a. 实现接口Runnable。
b. 继承于Thread类。
4.线程的一些方法:
sleep(): 睡觉,线程先休息一段时间,时间到了自动醒来,处于就绪状态。
wait() : 睡觉,线程不会自动醒来。只有别人通过notify方法来唤醒此线程才会醒来。
currentThread() : 获取当前线程对象的引用。
getId() :获取线程的id
getName() : 获取线程的名字
getPriority() :返回线程的优先级别。线程的级别分为从1~10共10个级别,10是最高级别,默认一个线程创建出来级别是5.
setPriority() :设置线程的优先级别。线程的优先级别只是从概率的角度加大了优先级别高的线程先执行的概率。
并不是级别高的就一定比级别低的先执行。
isDaemon() : 判断线程是否是精灵线程(也叫后台线程,守护线程)
setDaemon(): 设置精灵线程的。
join() : 将两个线程合并为一个线程。
yield(): 出让cpu . 自己不执行,把cpu让给别的线程去执行。