多线程
进程:正在运行的程序
系统分配资源和调用的独立单位
每一个进程都有他自己的内存空间和系统资源
进程指当前正在执行的程序,代表一个应用程序在内存中的执行区域
线程:进程中独立的执行单位,最小单元,是进程中的一个执行控制单元,执行路径。
单线程:一个进程如果只有一条执行路径,则称为单线程
多线程:一个进程如果有多个执行路径,则称为多线程
注意:进程只是负责开辟内存空间的,线程才是负责执行代码逻辑的执行单元。
Thread
步骤:
1.创建类继承Thread
2.重写run
3.创建对象
2.调用start
run和start的区别
run:封装当前线程想要执行的代码
satrt:启动线程,由JVM执行run
线程的随机性:
JVM在做随机的快速切换
JVM在某一时刻,只能执行一个线程
线程的优先级:只是提供了一个可能性(优先级高的抢到资源的概率大)
范围:1-10 默认为5
Thread设置获取线程优先级的方法:
int getPriority():返回此线程的优先级
void setPriority():更改此线程的优先级
Thread中设置和获取线程名称的方法
void SetName(String name):将线程的名称设置为name
String getName():返回次线程的名称
Thread(String name):构造函数,线程对象一建立就可以指定名称
static Thread currentThread():获取当前线程对象(通常用在main中)
注意:main是一个特殊的线程
不需要继承Thread
线程控制
void sleep(long millis) 使当前正在执行的线程暂停指定的毫秒数
void join() 等待这个线程的死亡
void setDaemon(boolean on) 将此线程标记为守护线程,当运行的线程都是守护线程时,Java虚拟机将退出
void stop();
注意:
不想允许都是守护线程,都是守护线程jvm将退出
守护其他线程,其他线程死亡之后,守护线程紧接着死亡(有延迟)
线程的声明周期
开始
就绪
运行
死亡
暂停