繁体   English   中英

理解线程的java代码

[英]understanding java code for thread

我刚刚查看了一些java代码,我遇到了以下程序

public class LengthOfString extends Thread {
    static String s;

    public void run(){
        System.out.println("You Have Enter String: " + s +"  Length Of It is :" + s.length());
    }

    public static void main(String[] args) throws InterruptedException {
        s = "This IS String";
        LengthOfString h = new LengthOfString(); //creating the object of class
        Thread t = new Thread(h);   //why we have passed this object here???
        t.start();
    }
} 

我知道它用于打印字符串长度,但我在理解注释行时遇到问题。 请帮助我理解为什么使用这个实现。

实际上在java中,有两种方法可以创建一个Thread

  • 提供Runnable对象。 Runnable接口定义了一个run方法,用于包含线程中执行的代码。 Runnable对象被传递给Thread构造函数。

  • 子类线程。 Thread类本身实现了Runnable,尽管它的run方法什么都不做。 应用程序可以子类化Thread,提供自己的run实现。

你选择了第二个,你可以简单地写

new LengthOfString().start();

代替

LengthOfString h=new LengthOfString(); //creating the object of class

Thread t=new Thread(h);   //why we have passed this object here???

 t.start();

编辑:

Thread类有一个构造函数public Thread(Runnable target) ,它将Runnable类型作为参数,当你将它传递给线程类时,它会在你启动该线程时调用run()方法的实现。

在这种情况下,您不需要Thread t = new Thread(h)行,因为LengthOfString扩展了Thread。 但很多时候,您实现了Runnable接口。 在这种情况下,您需要在构造函数中创建一个带有Runnable参数的Thread对象,因为Runnable Objects没有启动方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM