Thread 类的相关方法

Thread 类的有关方法(1)

  • 启动线程,并执行对象的 run() 方法:

    void start()
    
  • 线程在被调度时执行的操作:

    run()
    
  • 返回线程的名称:

    String getName()
    
  • 设置该线程名称:

    void setName(String name)
    
  • 返回当前线程:

    static currentThread()
    

测试类

public class Test {
    public static void main(String[] args) {
        // 创建实现类对象
        Runnable run0 = new RunDemo();
        Runnable run1 = new RunDemo();
        // 创建线程对象
        Thread t0 = new Thread(run0);
        Thread t1 = new Thread(run1,"t-1");// 这里创建的线程对象,并设置线程名称
        
        // setName() 设置线程名称
        t0.setName("t-0");
        
        // start() 启动线程
        t0.start();
        t1.start();
        
        // getName() 获取线程名称,如果创建线程时没有指定名称,系统会给出默认名称,
        System.out.println(t0.getName());
        System.out.println(t1.getName());
        
        // currentThread() 返回当前线程
        Thread thread0 = t0.currentThread();
    }
}

实现类

public class RunDemo implements Runnable{
    int count = 0;
    @Override
    // run() 被调度时执行的操作
    public void run() {
        System.out.println("Runnable 多线程 " + Thread.currentThread().getName() + " 运行的代码");
        for (int i = 0; i < 5; i++) {
            System.out.println("这是 Runnable 多线程 " + Thread.currentThread().getName() + " 的逻辑代码:" + i);
        }
    }
}

Thread 类的有关方法(2)

  • 线程让步:

    • 暂停当前正在执行的线程,把执行机会让给优先级相同或者更高的线程
    • 若队列中没有同优先级的线程,则忽略此方法
    static void yield()
    
  • 当某个程序执行流中调用其他线程的 join() 方法时,调用线程将被阻塞,直到 join() 方法加入的 join 线程执行完毕为止

    • 低优先级的线程也可以获得执行
    join()
    
  • 指定时间:毫秒

    • 令当前活动线程在指定时间段内放弃对 CPU 控制,是其他线程有机会被执行,时间到后重排队。
    • 需要抛出 InterruptedException 异常
    static void sleep(long millis)
    
  • 强制线程生命周期结束

    stop()
    
  • 判断线程是否还活着(返回 boolean 值):

    boolean isAlive()
    

测试类

public class Test {
    public static void main(String[] args) {
        // 创建实现类对象
        Runnable run0 = new RunDemo();
        Runnable run1 = new RunDemo();
        // 创建线程对象
        Thread t0 = new Thread(run0);
        t0.setName("t-0");
        Thread t1 = new Thread(run1,"t-1");// 这里创建的线程对象,并设置线程名称
        t0.start();
        t1.start();

        // isAlive() 判断当前线程是否存活
        System.out.println(t1.isAlive());

        System.out.println(1);
        try {
            // stop() 强制线程生命周期结束,相当于强制停止此线程
            t1.stop();
            // join() 阻塞,这里相当于阻塞当前的 main 方法,需要先执行完 join 进来的线程代码,才可以继续执行
            t0.join();// 可以理解为将 t0 的 run 中的代码插入到这个位置执行
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(2);
		//这里返回的是 false,因为上面 t1 的生命周期被结束了
        System.out.println(t1.isAlive());
    }
}

实现类

public class RunDemo implements Runnable{
    @Override
    public void run() {
        System.out.println("Runnable 多线程 " + Thread.currentThread().getName() + " 运行的代码");
        for (int i = 0; i < 5; i++) {
            try {
                // sleep(1000) 当前的线程睡眠 1000 毫秒,相当于 1s
                Thread.sleep(1000);// 当前这个循环每 1000 毫秒执行一次
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            // yield() 线程让步
            Thread.yield();

            System.out.println("这是 Runnable 多线程 " + Thread.currentThread().getName() + " 的逻辑代码:" + i);
        }
    }
}
上一篇:线程创建的三种方法:继承Thread类,实现Runnable接口,实现Callable接口


下一篇:2021-10-13