zoukankan      html  css  js  c++  java
  • 线程对象方法

    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() + ":	" + i);
    
            }
        }
    
        public JoinMethod(String name) {
            super(name);
    
        }
    }

    执行结果:

    6、getName()和setName() 

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

    7、getPriority()和setPriority() 

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

    8、setDaemon()和isDaemon() 

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

    欢迎批评指正,提出问题,谢谢!
  • 相关阅读:
    Linux下目录的权限详解
    Linux下mknod详解
    迅雷精简版-无广告
    PotPlayer一款简洁好用的播放器
    Linux 信号signal处理机制
    Kruskal算法求最小生成树
    Prim算法求权数和,POJ(1258)
    Prim算法求最大权,POJ(2485)
    Prim算法
    DP找最优配置,(POJ1018)
  • 原文地址:https://www.cnblogs.com/xxeleanor/p/15335100.html
Copyright © 2011-2022 走看看