线程对象方法

1、start()方法

start()方法用来启动一个线程,当调用start方法后,系统才会开启一个新的线程来执行用户定义的子任务,在这个过程中,会为相应的线程分配需要的资源。

2、run()方法

run()方法不是需要用户来调用的,当通过start方法启动一个线程之后,线程获得了CPU执行时间,便进入run方法体去执行具体的任务。注意继承Thread类必须重写run方法,在run方法中定义具体要执行的任务。

3、getId()方法

getId()的作用是取得线程的唯一标识。

package day03;

public class ThreadTest {
    public static void main(String[] args) {
        Thread thread1 = Thread.currentThread();
        System.out.println(thread1.getId());
    }
}
执行结果:

 4、isAlive()方法

isAlive()方法的作用是判断当前线程是否处于活动状态,活动状态就是线程已经启动尚未终止,处于正在运行或准备开始运行的状态,线程就是活的。

package day03;

public class ThreadIsActive {
    public static void main(String[] args) {
        Thread thread1 = new ThreadIsActive().new MyThread();
        System.out.println("开始:" + thread1.isAlive());
        thread1.start();
        System.out.println("结束:" + thread1.isAlive());
    }

    class MyThread extends Thread {
        @Override
        public void run() {
            System.out.println("isActive:" + this.isAlive());
        }
    }
}
执行结果:

 需要注意这个:System.out.println("IsAlive:" + this.isAlive());虽然打印的是true,但该值是不确定的。打印true的原因MyThread线程还未执行完成,所以输出true。

5、join()方法 

很多情况下主线程创建并启动了线程,如果子线程中要进行大量的耗时运算,主线程会早于子线程结束之前结束。如果主线程想等子线程执行完成以后再结束,就需要用到join方法,它的作用是等待线程对象销毁。

package day03;

public class JoinMethod extends Thread {

    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            if (i == 5) {
                try {
                    JoinMethod t1 = new JoinMethod("JoinedMethod main Thread:");
                    t1.start();
                    t1.join();

                } catch (InterruptedException e) {
                    e.printStackTrace();

                }
            }
            System.out.println(Thread.currentThread().getName() + ":" + i);
        }
    }

    @Override
    public void run() {
        for (int i = 1; i <= 5; i++) {
            System.out.println(getName() + ":\t" + i);

        }
    }

    public JoinMethod(String name) {
        super(name);

    }
}

执行结果:

6、getName()和setName() 

用来得到或者设置线程名称。

7、getPriority()和setPriority() 

用来获取和设置线程优先级。

8、setDaemon()和isDaemon() 

用来设置线程是否成为守护线程和判断线程是否是守护线程。

posted @ 2021-09-25 18:35  Eleanor123  阅读(87)  评论(0编辑  收藏  举报