目录
#博学谷IT学习技术支持#
1.线程的相关概念
并行:在同一时刻,有多个指令在多个CPU上同时执行。
并发:在同一时刻,有多个指令在单个CPU上交替执行。
进程:是正在运行的软件
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。
动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的。
并发性:任何进程都可以同其他进程一起并发执行。
线程:是进程中的单个顺序控制流,是一条执行路径。
单线程:一个进程如果只有一条执行路径,则称为单线程程序
多线程:一个进程如果有多条执行路径,则称为多线程程序
2.多线程的实现方式
2.1
方案1:继承Thread类
定义一个类MyThread继承Thread类
在MyThread类中重写run()方法
创建MyThread类的对象
启动线程
2.2
方式2:实现Runnable接口
定义一个类MyRunnable实现Runnable接口
在MyRunnable类中重写run()方法
创建MyRunnable类的对象
创建Thread类的对象,把MyRunnable对象作为构造方法的参数
启动线程
2.3
方式3:Callable和Future
定义一个类MyCallable实现Callable接口
在MyCallable类中重写call()方法
创建MyCallable类的对象
创建Future的实现类FutureTask对象,把MyCallable对象作为构造方法的参数
创建Thread类的对象,把FutureTask对象作为构造方法的参数
启动线程
再调用get方法,就可以获取线程结束之后的结果。
3.线程常见方法
1.获取线程的名字
String getName():返回此线程的名称
2.Thread类中设置线程的名字
void setName(String name):将此线程的名称更改为等于参数 name
通过构造方法也可以设置线程名称
3.public static Thread currentThread():返回对当前正在执行的线程对象的引用
4.public static void sleep(long time):让线程休眠指定的时间,单位为毫秒。
4.线程调度
线程有两种调度模型
(1)分时调度模型:所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间片 (2)抢占式调度模型:优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机 选择一个,优先级高的线程 ,获取的 CPU 时间片相对多一些
Java使用的是抢占式调度模型。
关于线程优先级方法:
public final void setPriority(int newPriority) 设置线程的优先级
public final int getPriority() 获取线程的优先级
public final void setDaemon(boolean on):设置为守护线程