• 某类继承thread,同时实现runnable


    1. package com.giserve.test;  
    2.   
    3. public class ThreadTest {  
    4.     public static void main(String[] args) {  
    5.         new Thread(new Runnable() {  
    6.               
    7.             @Override  
    8.             public void run() {  
    9.                 while(true){  
    10.                     try {  
    11.                         Thread.sleep(1000);  
    12.                         System.out.println("Thread1::"+Thread.currentThread().getName());  
    13.                     } catch (InterruptedException e) {  
    14.                         // TODO Auto-generated catch block  
    15.                         e.printStackTrace();  
    16.                     }  
    17.                 }  
    18.             }  
    19.         }){  
    20.             @Override  
    21.             public void run() {  
    22.                 while(true){  
    23.                     try {  
    24.                         Thread.sleep(1000);  
    25.                         System.out.println("Thread0::"+Thread.currentThread().getName());  
    26.                     } catch (InterruptedException e) {  
    27.                         // TODO Auto-generated catch block  
    28.                         e.printStackTrace();  
    29.                     }  
    30.                 }  
    31.             };  
    32.         }.start();  
    33.     }  
    34. }  

    结果是:

    Thread0::Thread-0
    Thread0::Thread-0
    Thread0::Thread-0
    Thread0::Thread-0
    Thread0::Thread-0
    Thread0::Thread-0
    Thread0::Thread-0
    Thread0::Thread-0
    Thread0::Thread-0
    Thread0::Thread-0
    Thread0::Thread-0
    Thread0::Thread-0
    Thread0::Thread-0
    Thread0::Thread-0
    Thread0::Thread-0
    Thread0::Thread-0
    Thread0::Thread-0

    在JDK源码中Thread线程中的run是这样实现的

    1. @Override  
    2. public void run() {  
    3.     if (target != null) {  
    4.         target.run();  
    5.     }  
    6. }  

    结论:
    target代表的是构造Thread时传入的Runable对象,疑问为什么会是Thread-0,原因是当子类覆盖父类后,上面的run方法的target就不存在了。所以执行的run方法就是Thread子类的。

  • 相关阅读:
    geoserver显示shapefile中汉字呈乱码问题的可选解决方案
    C++回调函数示例
    也谈谈技术面试
    轻快好的c++实践
    向 Hacker 迈进 我的书单
    CMake是个好东西
    工作之中总有几日不在状态_你是怎样度过的?
    我是如何从煤矿工成为程序员的
    java多线程系列_用Thread类创建线程(2)
    java多线程系列_使用Runnable接口创建线程(3)
  • 原文地址:https://www.cnblogs.com/tiger-fu/p/8951940.html
Copyright © 2020-2023  润新知