自学Java第三十八课
多线程
1、实现多线程
1.1、进程:正在运行的程序。进程是系统进行资源分配和调用的独立单位,每一个进程都有它自己的内存空间和系统资源。
1.2、线程:进程中的单个顺序控制流,是一条执行路径。 单线程:只有一条执行路径。 多线程:具有多条执行路径。例如记事本是一个单线程,游戏一般都是多线程。
1.3、多线程的实现方式
继承Thread类:定义一个类继承Thread类->在定义的类中重写run()方法->创建类的对象->启动线程(start())。
问题:重写run()方法? run()用来封装被线程执行的代码。
run()和start()的区别?run():封装线程执行的代码,直接调用,相当于普通方法调用;start():启动线程,由JVM调用此线程run()方法。
1.4设置和获取线程名称
Thread类中设置和获取线程名称的方法:
void setName(String name):将线程名称更改为等于参数name
String getName():返回线程名称
1 public class MyThread extends Thread { 2 @Override 3 public void run() { 4 for(int i=0;i<100;i++){ 5 System.out.println(i); 6 } 7 } 8 }
获取线程名称:public static Thread currentThread():返回对当前正在执行线程对象引用。
1.5、线程调度
①分时调度模型:线程轮流使用CPU使用权,平均分配每个线程占用CPU时间片
②抢占式调度模型:让优先级高的使用CPU,优先级相同时,随机选择一个,优先级高的线程获取CPU时间片相对多一些。Java就是抢占式调度模型
注:多线程程序执行具有随机性
Thread类中设置和获取线程优先级方法
public final int getPriority():返回此线程的优先级
public final void setPriority(int newPriority):更改优先级
线程默认优先级:5;优先级的范围:1~10.
明天将会继续学习线程周期、控制及其案例。