A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 杨长川 于 2013-3-27 13:31 编辑
  1. class Test extends Thread
  2. {
  3.       
  4.       Test(String name)
  5.       {
  6.           super(name);
  7.       }
  8.       public void run()
  9.       {
  10.           for(int x=0; x<60; x++)
  11.             {
  12.                 System.out.println((Thread.currentThread()==this)+".."+this.getName()+"run.."+x);  //Thread.currentThread()跟this在使用上有什么区别吗?
  13.             }
  14.      }
  15. }
  16. class ThreadTest  
  17. {
  18.       public static void main(String[] args)
  19.       {
  20.           Test t1 = new Test("one---");
  21.           Test t2 = new Test("two+++");

  22.   
  23.           t1.start();
  24.           t2.start();
  25.          for(int x=0; x<60; x++)
  26.         {
  27.            System.out.println("main"+x);
  28.         }
  29.     }
  30. }
复制代码
除了Thread.currentThread()是通用外还有什么区别吗?

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

4 个回复

倒序浏览
其实你要理解 this关键字的作用,,这样跟你说吧,this就是代表当前调用方法的一个引用
拿你上面的代码为例:
谁会执行run()方法,当然是你创建的两个对象t1和t2,那么当t1.start()的时候,this就代表t1这个对象的引用。同理:t2也一样
而thread.currentThread(),就是获取当前线程。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
都是获得当前线程。继承Thread类获得当前线程对象可以用Thread.currentThread()和this。但实现Runnable接口来获得当前线程对象必须使用Thread.currentThread()。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
HM谢文辉 发表于 2013-3-27 09:49
都是获得当前线程。继承Thread类获得当前线程对象可以用Thread.currentThread()和this。但实现Runnable接口 ...

支持该回复。
run方法有可能处于Runnable类中,Runnable接口中只有run方法一个,没有其他方法,由其他线程直接调用run方法执行任务,用this此种情况下就无法调用Thread类中的其他方法。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
若还有问题,继续追问; 没有的话,尽量及时将帖子分类改成【已解决】~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马