Thread.currentThread()、isAlive()、Thread.sleep()的使用

1、Thread.currentThread()方法: 返回当前正在运行的线程

一个简单的例子:

     

        MyThread_7.Java类的构造函数是被main线程调用的,而run()方法是被名为Thread-0的线程调用的。注意这里使用thread.start(),而不是thread.run(),前者run()方法是自动调用的,后者并没有另起一个线程,而是直接调用MyThread_7类的run()方法。


2、isAlive()方法:判断当前线程是否处于活动状态

       “活动状态”是指线程处于运行或者准备开始运行的状态。下面通过两个例子说明this与Thread.currentThread()的差异。

(1)例子一:



        分析:Thread.currentThread()返回的是当前运行的线程,而this是指当前对象。本例中,MyThread_8.java的构造方法是被main线程调用的,run()方法是被线程Thread-0调用的,而this是指MyThread_8类的实例,是线程Thread-0。因此在调用构造方法时,Thread.currentThread().getName()返回的是main,this.getName()返回的是Thread-0,而由于当前运行的线程是main,而不是this对应的Thread-0线程,故this.isAlive()返回false。在调用run()方法时的分析可以类比。


(2)例子二:将线程对象以构造参数的方式传递给Thread对象,将run()方法交由其它线程来调用



      分析:与上一个例子对比,发现run()的输出不同。本例中,this(对应Thread-0)的run方法是交由线程Thread-run执行的,而不是由自己执行。所以在run()方法执行时,Thread.currentThread().getName()返回的是Thread-run,this.isAlive()返回的是false。

          要分清楚Thread.currentThread()与this的区别。


3、Thread.sleep():使“正在执行的线程”休眠指定的毫秒数。

        这个“正在执行的程序”是指this.currentThread()返回的线程。


          在run()方法中调用Thread.sleep(2000)方法,会使正在运行的线程(Thread-0)休眠2000毫秒,是run()输出的begin time与end time之差。由本例还可见,mian线程与Thread-0线程是异步执行的,main线程运行完后,Thread-0线程再运行。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值