线程身上有非常多的常用方法
方法名 | 说明 |
---|
setName | 设置线程名称,使之与参数name相同 |
getName | 返回线程的名称 |
start | 使线程开始;java虚拟机底层调用该线程的Start0方法 |
run | 调用线程对象run方法;与start不同,调用该方法不会生成新的线程,而是阻塞原线程的进行 |
setName | 设置线程名称,使之与参数name相同 |
setPriority | 设置线程优先级 |
getPriority | 获取线程优先级 |
sleep | 在指定的毫秒数内让当前正在执行的线程休眠(暂定执行)会抛出异常使用Alt + Enter解决 |
interrupt | 中断线程(而不是结束执行)会抛出异常使用Alt + Enter解决 |
yeild | 线程的礼让。让出cpu,让其他线程执行,但礼让的时间不确定,所以也不一定礼让成功。具体要看cpu是否空闲 |
join | 线程的插队。插队的线程一旦插队成功,则肯定先执行完插入的线程所有的任务。强制版的yeild |
下面这段代码使用了其中的一些方法
public class CSDN {
public static void main(String[] args) throws InterruptedException {
System.out.println("开始主线程");
Thread thread = new Thread(new myThread());
for (int i = 0; i < 10; i++) {
if (i == 4) {
thread.start();
thread.join();
}
System.out.println("线程名为" +
Thread.currentThread().getName() +
"计数是" + i);
}
System.out.println("主线程结束");
}
}
class myThread implements Runnable{
@Override
public void run() {
System.out.println("开始子线程");
for (int i = 0; i < 5; i++) {
if (i == 4) {
Thread.currentThread().setName("R.divan");
Thread.currentThread().setPriority(10);
}
try {
System.out.println("线程名为" + Thread.currentThread().getName() +
"\n线程优先级为" + Thread.currentThread().getPriority() +
"现在计数是" + i);
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
System.out.println("子线程结束");
}
}
得到的执行结束结果是
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ba20278b20c4440b88313840811ef28d.png)