java中的线程,线程生命周期,线程加入,线程实现方法,线程优先级

1 篇文章 0 订阅

一、线程的实现方式:

     1、继承java.lang.Thread类 (Thread类实际上实现了Runnable接口)

           启动一个新线程需要建立一个Thread实例。

          Thread常用构造方法:

                   1.1、public  Thread(): 创建一个新的线程对象。

                   1.2、public Thread(String threadName): 创建一个名称为threadName的线程对象。

           语法:public class ThreadTest extends Thread{}

           当继承Thread类后,就在该类中覆盖run()方法。将实现该线程功能的代码写入run()方法中,同时调用Thread类中的start()方法执行线程。也就是调用了run()方法。

           如果start()方法调用了一个已经启动的线程,系统将抛出IllegalThreadStateException异常。

     2、实现java.lang.Runnable接口

           使用场景:如过一个类要继承其他非Thread类又需要实现多线程,就可以通过Runnable接口实现。

           ***  实质上Thread类实现了Runnable接口,其中run()方法正是对Runnable接口中的run()方法的具体实现。 

          实现方法一:步骤:

          2.1.1、建立Runnable对象。

          2.1.2、使用参数为Runnable对象的构造方法创建Thread实例。

          2.1.3、调用start()方法启动线程。

         

public class SwingAndThread extends JFrame {

    public SwingAndThread (){

        t = new Thread(new Runnable(){

            public void run(){
                //功能代码
            }
        });
        t.start();
    }
}

              ***  启动一个新线程,不是直接调用Thread子类对象的run()方法,而是调用Thread子类的start()方法,Thread类中的start()方法产生一个新的线程,该线程运行Thread子类的run()方法。

         实现方法二:步骤:

         2.2.1、定义类实现Runnable 接口
         2.2.2、覆盖Runnable 接口中的run方法(将线程要运行的代码存放在该run方法中)
         2.2.3、 通过Thread 类建立线程对象
         2.2.4、将Runnale接口的子类对象作为实际的参数传递给Thread 类的构造函数
                    (为什么要Runnable 接口的自欸对象传递给Thread的子类对象,所以要让线程去指定对象的run方法,就必须明确该run方法所属的对象)
         2.2.5、调用Thread 类的start方法开启线程并且调用Runnable 接口的子类的run 方法。
   

public static class SwingAndThread extends JFrame implement Runnable{
    public void run(){ 
        // 功能代码 
    }
}

public class test {
    public static void main(String[] args) {
        Thread a = new Thread(new SwingAndThread());//创建一个新的线程
        a.start();
    }
}

二、线程的生命周期    

生命周期包含7中状态:

        出生状态:线程被创建时处于的状态。

        就绪状态:调用start()方法之后就进入就绪状态。

        运行状态:当线程得到系统资源后就进入运行状态。

        等待状态:当线程调用Thread类中的wait()方法时,就进入等待状态。

        休眠状态:当线程调用Thread类中的sleep()方法时

        阻塞状态:当线程运行时发出输入、输出请求。进入阻塞状态。当等待输入输出结束时线程进入就绪状态。

        死亡状态:当线程的run()方法执行完毕时,进入死亡状态。

三、线程的休眠 

       调用sleep()方法。通常在run()方法内的循环中被使用。

四、线程的加入:

        使用场景:要求一个线程先执行完毕之后再执行另一个线程。
        使用方法:join();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值