线程常用方法(API)

45 阅读1分钟
    看看就好除了Thread.currentThread()和sleep()方法,其他的都用不上
    public static void main(String[] args) {
        Thread t1 = new MyThread();
        t1.setName("1号线程");//对线程进行改名
        t1.start();
        Thread t2 = new MyThread();
        t2.setName("2号线程");
        t2.start();
        Thread t = Thread.currentThread(); // Thread.currentThread();这个方法表示那个线程执行它就获取那个线程对象
        t.setName("主线程");//因为是主线程执行的Thread.currentThread();方法所以被改名的也是主线程
        System.out.println(t.getName() + "执行");
        //线程的默认名为 Thread-索引(索引根据创建线程对象的先后顺序)  主线程的默认名为main

    }
}
class MyThread extends Thread {
    @Override
    public void run() {
            System.out.println(Thread.currentThread().getName() + "执行");
    }
}

对线程改名字还可以使用构造器,对主线程取名还得用上面老方法

public class FileDemo {
    public static void main(String[] args) {
        Thread t1 = new MyThread("1号线程");
        t1.start();
        Thread t2 = new MyThread("2号线程");
        t2.start();
        Thread t = Thread.currentThread(); // Thread.currentThread();这个方法表示那个线程执行它就获取那个线程对象
        t.setName("主线程");//因为是主线程执行的Thread.currentThread();方法所以被改名的也是主线程
        System.out.println(t.getName() + "执行");
        //线程的默认名为 Thread-索引(索引根据创建线程对象的先后顺序)  主线程的默认名为main

    }
}
class MyThread extends Thread {
    public MyThread() {//提供无参构造器显得专业一点
    }
    public MyThread(String name) {
        super(name);//通过super把name穿给父类对象
    }
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() + "执行");
    }
}

线程休眠

public class FileDemo {
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            System.out.println("输出" + i);
            if(i == 3){
                try {
                //作用:
                //产品经理让我加上这行代码,如果用户愿意给钱,我就注释掉
                    Thread.sleep(3000);//这是Thread的方法,因为main是本身就是线程就没有在创建线程对象
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        }

    }
}