一、引言

  Thread类中存在着许多操作线程的方法,学习Thread类是非常有必要的,前面我们也嘘唏了创建线程的几种方式,若线程的创建不是以继承Thread类的方式创建的,那我们又改如何使用Thread中的方法呢?下面一起来学习一下多线程操作的重点--Thread类。

二、实例详解

/**
 * 认识Thread类的常用方法
 */
public class MyThread {

    public static void main(final String[] arguments) throws InterruptedException {
        /*一个以实现Runnable接口的方式创建的线程,如何使用Thread类中的方法?*/
        //1、创建一个线程实例(此线程是以实现Runnable接口的方式创建的)
        TestThread runableThread = new TestThread();
        //2、通过Thread类的构造函数,用刚才创建的线程生成一个Thread类的实例
        Thread thread = new Thread(runableThread);

        /*Thread类中重要的操作线程方法*/
        thread.setName("线程1");//设置线程名称
        thread.setPriority(1);//设置线程优先级(1~10;默认为5;10为最高优先级;优先级高并不一定就先执行!
        thread.setDaemon(false);//设置该线程是否为守护线程(true:是;false:不是)
        thread.start();//启动线程
        thread.isAlive();//查看当前线程是否存活
        thread.join(3000L);//等待该线程执行X秒后再执行下面的代码(PS:若设值大于线程执行时间,则执行完毕后立即执行下面的线程)
        thread.interrupt();//终止线程(PS:若线程中存在sleep方法,且线程还没运行完毕,调用interrupt时会报错)

        /*Thread类中的静态方法*/
        thread.sleep(1000L);//线程休眠1秒(当前线程回到可执行状态,并不一定能立即执行!
        thread.yield();//暂停执行当前线程,并执行其他线程(当前线程回到可执行状态)
        thread.currentThread();//返回当前线程的实例对象
    }

    /**
     * 线程实体(实现Runnable接口)
     */
    static class TestThread implements Runnable {

        public void run() {
            try {
                System.out.println("运行线程!线程名称为: " + Thread.currentThread().getName() + ",执行开始时间:" + new Date());
                TimeUnit.SECONDS.sleep(5L);//休眠
                System.out.println("运行线程完毕!线程名称为: " + Thread.currentThread().getName() + ",执行结束时间:" + new Date());
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

}
12-21 01:53