zoukankan      html  css  js  c++  java
  • Thread.currentThread与this的区别

      在看多线程的时候,看到这个知识点,感觉需要验证一下。

    一:线程自启动

    1.程序

     1 package com.jun.it.thread;
     2 
     3 public class MyThread extends Thread {
     4     MyThread(){
     5         System.out.println("----------");
     6         System.out.println("name:"+Thread.currentThread().getName());
     7         System.out.println("isActive:"+Thread.currentThread().isAlive());
     8         System.out.println("thisName:"+this.getName());
     9         System.out.println("thisIsActive:"+this.isAlive());
    10         System.out.println("----------");
    11     }
    12     public void run(){
    13         System.out.println("=======================");
    14         System.out.println("name:"+Thread.currentThread().getName());
    15         System.out.println("isActive:"+Thread.currentThread().isAlive());
    16         System.out.println("thisName:"+this.getName());
    17         System.out.println("thisIsActive:"+this.isAlive());
    18         System.out.println("=======================");
    19     }
    20 }

    测试类:

     1 package com.jun.it.thread;
     2 
     3 
     4 public class RunMyThread {
     5     public static void main(String[] args) {
     6         test1();
     7 //        test2();
     8     }
     9     /**
    10      * 测试一
    11      */
    12     public static void test1(){
    13         MyThread myThread=new MyThread();
    14         myThread.setName("AA");
    15         myThread.start();
    16     }
    17 
    18     /**
    19      * 测试二
    20      */
    21     public static void test2(){
    22         MyThread myThread=new MyThread();
    23         Thread thread=new Thread(myThread);
    24         thread.setName("BB");
    25         thread.start();
    26     }
    27 }

    2.效果:

      

    3.总结

      Thread.currentThread():表示当前的代码正在被谁调用。

      this:只能是当前的线程,在程序中,代表是myThread。

      PS:

      至于thread-0:每次新new的时候,在构造函数中,会定义默认的线程名。

    二:线程被作为参数传入Thread

    1.程序

      启动测试2

    2.效果

      

    3.总结

      根据上文的说法,this代表myThread,则说明,线程没有开启。

      在这个示例中,外部线程在start后启动,实际上调用的是内部线程的run方法开启的。

      Thread.currentThread()与this指向了不同的线程对象,Thread.currentThread()指向的是外部的线程,表示当前方法被外部线程thread调用;this指向内部线程myThread。

  • 相关阅读:
    C++实现网络寻路
    java实现生日相同概率
    java实现生日相同概率
    Mysql 锁表 for update (引擎/事务)
    mysql(for update)悲观锁总结与实践
    Select For update语句浅析
    Mysql查询语句使用select.. for update导致的数据库死锁分析
    数据库中Select For update语句的解析
    【转载】支付宝运营架构中柔性事务指的是什么?
    互联网支付系统整体架构详解
  • 原文地址:https://www.cnblogs.com/juncaoit/p/11151521.html
Copyright © 2011-2022 走看看