线程的方法

Thread.currentThread()
获得正在执行的线程对象
Thread.sleep(毫秒)
让正在执行的线程,在此处暂停指定的毫秒时间 1000=1s
getName()

Thread t = Thread.currentThread();
String n = t.getName();
线程的方法_第1张图片
特殊写法

run()方法不能加异常抛出管道,父类没有

一秒打印一次时间例子

import java.text.SimpleDateFormat;
import java.util.Date;

public class XianChengSleep {
    public static void main(String[] args) {
        //新建匿名类继承Thread,调用父类构造方法
        Thread t=new Thread(){
            @Override
            public void run() {
                SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
                for(int i=1;i<=5;i++)
                {
                    String s = sdf.format(new Date());
                    System.out.println(s);
                    try {
                        //这个值不一定精确,因为要等待时间片
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        //InterruptedException这个异常一般不会出现
                        e.printStackTrace();
                    }
                }
            }
        };
        t.start();
    }
}

运行结果

19:11:19
19:11:20
19:11:21
19:11:22
19:11:23

interrupt()
打断一个线程的暂停状态,被打断的线程会出现InterruptedException


线程的方法_第2张图片
interrupt
package day1404线程;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class XianChengInterrupt {
    public static void main(String[] args) {
        //新建匿名类继承Thread,调用父类构造方法
        Thread t=new Thread(){
            @Override
            public void run() {
                SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
                for(int i=1;i<=5;i++)
                {
                    String s = sdf.format(new Date());
                    System.out.println(s);
                    try {
                        //这个值不一定精确,因为要等待时间片
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        System.out.println("谁捅醒了我!");
                        break;
                    }
                }
            }
        };
        t.start();
        System.out.println("按回车");
        Scanner sc = new Scanner(System.in);
        sc.nextLine();
        sc.close();
        t.interrupt();
    }

}

运行结果

按回车
19:21:45
19:21:46
19:21:47

谁捅醒了我!

join()
当前线程,等待被调用的线程执行结束


线程的方法_第3张图片
a线程b线程并行执行

线程的方法_第4张图片
b线程想使用a线程在红点处的运算结果

线程的方法_第5张图片
a.join()

你可能感兴趣的:(线程的方法)