java多线程基础1

java使用Thread类来代表线程,所有的 线程都必须是Thread类或其子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段代码 。

  1.   在java中有两种实现多线程的方式,继承Thread类和实现Runnable接口,之后还要重写run()方法,但我们启动线程时是调用start()方法,

                start方法再调用run()方法。具体的实现方法如下:

继承Thread类:

               

      实现Runnable接口:

     

           另外在SecondThread类中,这里的i是共享的,也就是采用runnable接口方式创建的多个线程可以共享线程类的实例变量。这是因为在这种方式下,

           程序所创建的runnable对象只是线程的target,而多个线程可以共享一个target,所以多个线程共享一个线程类的实例变量。


      2,  线程的生命周期

            当线程被创建并启动以后,它既不是已启动就进入了执行状态,也不是一直处于执行状态,在线程的生命周期中,要经过新建,就绪,运行,阻塞和死亡5种状态。


            a,新建和就绪状态

            当程序使用new关键字创建了一个线程之后,该线程就出于新建状态,此时它和其他java对象一样,仅仅由java虚拟机为其分配内存,并初始化其成员变量的值。此时的

            线程随想没有表现出任何现成的动态特征,程序也不会执行线程的线程执行体。当线程对象调用了start()方法之后,该线程就处于就绪状态,java虚拟机就会为其创建方

            法调用栈和程序计数器,处于这个状态中的线程并没有开始运行,只是表示该线程可以运行了。至于该线程何时开始运行,取决于JVM里线程调度器的调度。

       注意:就绪状态相当于“等待执行”,但该线程并未真正进入运行状态

    b,运行和阻塞状态

             

        


   c,线程死亡       

         线程会以如下三种方式结束,结束后就处于死亡状态:

  run()方法执行完成,线程正常结束

线程抛出一个为扑火的Exception或error

直接调用该线程的stop()方法来结束线程----该方法容易导致死锁,通常不推荐使用

 

 

注意:不要试图对一个已经死亡的线程调用start()方法使它重新启动,死亡就是死亡,该线程不可再次作为线程执行。

可以调用isAlive()方法测试某个线程是否死亡,当线程处于就绪,运行,阻塞状态时,方法返回true,当处于新建,死亡状态时,该方法返回false。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值