一.认识线程
1.并发与并行
并发:指两个或多个事件在同一时间段内发生
并行:指两个或多个事件在同一个时刻发生
2.线程和进程
进程:正在运行的程序
线程:进程中单个顺序的控制流,是一条执行路径
单线程:一个进程中只有一条执行路径,单线程程序
多线程:一个进程中有多条执行路径,多线程程序
3.创建线程
所有线程对象都是Thread类或是其子类的实例
-
定义Thread类的子类,并重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务,因此把run()方法称为线程执行体。
-
创建Thread子类的实例,即创建了线程对象
-
调用线程对象的start()方法来启动该线程
注意:run和start的区别
- run封装线程执行的代码,直接调用,不启动线程
- start启动线程,jvm调用run方法
二.线程
getname:获取线程名称
setname:设置线程名称
获取当前线程:Thread.currentThread
线程调度:
线程调度方式:
分时调度模型:所有线程轮流使用cpu的使用权,平均分配每个线程的占用cpu的时间
抢占式调度模型:优先让优先级高的线程使用cpu,如果线程优先级相同,随即使用,优先级高占用cpu时间相对多
java一般使用抢占式模型
线程优先级取值范围1-10,默认是5
getPriority:获取优先级
setPriority:设置优先级
线程控制
sleep(long l)指定停留时间
join:等待该线程死亡
setDaemon(boolean on):守护线程,如果只剩下守护线程,jvm停止运行
线程生命周期