java基础(jdk1.8)
**
Thread类的常用方法
**
学习线程先了解Thread类的方法
文章目录

start()
启动一个新的线程 新线程最终调用runnable接口提供的run方法
run()
主线程直接调用run不会创建新的线程子线程的执行体,子线程run方法结束线程结束
start与run的区别
1.创建线程与否
start创建线程 run不创建线程
2.调用区别
start调用Runnable接口的(重新)run方法
run直接调用run方法
static yield()
让步或者暂停,让正在执行的线程停止或者让步,让给优先级较高的线程暂时获取CPU执行权
注意:
static静态方法,让步线程为当前正在执行线程,不一定为调用yield方法的线程
join()
等待线程(调用join方法的线程)执行结束才继续执行之前线程
常用于实现线程先后顺序
public static void main(String[] args) {
/**
* 现在有三个线程(A B C)
* 实现先后执行顺序BCA
*/
PrintSort b = new PrintSort();
b.setName("B");
PrintSort c = new PrintSort(b);
c.setName("C");
PrintSort a = new PrintSort(c);
a.setName("A");
a.start();
b.start();
c.start();
}
public class PrintSort extends Thread{
Thread thread;
public PrintSort() {
}
public PrintSort(Thread thread) {
this.thread = thread;
}
@Override
public void run() {
if (thread != null)
{
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName());
}
}
static sleep(long millis)
休眠方法
让当前线程进行休眠,即让线程阻塞,Thread类的静态方法
sleep属于静态方法
interrupt()
中断方法
底层调用native方法,native方法的作用是对特定的标识位做修改
主要作用于线程:运行中线程、阻塞线程(sleep、join)
运行中线程:interrupt方法仅仅是对标志位做了修改,其他没有影响
阻塞线程:interrupt方法对标志位做了修改,令阻塞中的线程感知到标志位做了修改,就会中断当前的阻塞状态,抛出INterruptedException异常
setDaemon(boolean)
设置守护线程 true:设置为守护线程 false:设置为用户线程
默认为用户线程
守护线程:脱离用户终端,作为提供通用服务的线程存在
用户线程:
区别:
1.生命周期:守护线程的生命周期依赖于用户线程,当有用户线程存在,守护线程就会存活,当没有用户线程存在,按守护线程也随之消亡,垃圾回收是有单独线程来处理的,负责垃圾回收就是守护线程
setPriority()
设置线程优先级,优先级数字越大,优先级越大,被优先调用的概率会大
1 最小优先级
5 默认优先级
10 最大优先级
有兴趣的关注我的公众号,一起学习交流啊
上一篇 》创建线程方式
下一篇 》线程的状态及转化