多线程(二):常见的成员方法(黑马Java课程)
一、前言上一章我们已经了解了什么是多线程以及多线程的三种启动方式接下来我将针对多线程中常见的成员方法进行讲解。二、常见的成员方法String getName() 返回此线程的名称注意如果没有给线程设置名字线程也是有默认名字的格式Thread-XX序号从0开始void setName(String name) 设置线程的名称构造方法也可以设置名字以下是用构造方法设置名字MyThread方法中已经有构造方法设置名字子类只需调用父类的方法即可static Thread currentThread() 获取当前线程的对象注意当JVM虚拟机启动之后会自动的启动多条线程其中有一条线程就叫做main线程它的作用就是去调用main方法并执行里面的代码之前我们写的所有代码都是运行在main线程当中。static void sleep(long time) 让线程休眠指定时间单位为毫秒注意那条线程执行到这个方法那么哪条线程就会在这里停留对应的时间方法的参数就表示睡眠时间单位是毫秒当时间到了之后线程会自动醒来继续执行下面的其他代码。抢占式调度CPU在什么时候执行、执行多长时间是不确定的也就是随机性。比如多名同学排队打饭原本轮到一人就餐如果这个时候有优先级更高的同学来就餐会立即打断正在打饭的人优先让高优先级的人先打饭等高优先级的人完成后之前被打断的才会继续完成剩下没完成的。java中采用的是抢占式调度setPriority(int newPriority) 设置线程的优先级final int getPriority() 获取线程的优先级优先级最小是1最大是10未设置优先级则默认为5优先级越高抢到CPU的概率越大但不能百分百确定抢到CPU的执行权如上图代码及运行结果开始t1和t2未设置优先级默认为5故输出两个5。后将t1优先级设置为1t2优先级设置为10则t2抢到CPU执行权的概率更大但并非绝对如上图运行结果t1先执行完毕。final void setDaemon(boolean on) 设置为守护线程当其他的非守护线程执行完毕之后守护线程会陆续结束用下面例子简单来阐述就是女神线程结束了备胎线程也没有存在的必要了。放入现实场景聊天为线程1发送文件为线程2守护线程当退出聊天时发送文件则会终止。public static void yield() 出让线程/礼让线程public final void join() 插入线程/插队线程正常应该是main线程先执行完才轮到t线程但由于使用了插入线程故先执行t线程再轮到main线程。三、小结本章主要讲解了多线程的常用方法希望大家能理解运用。