我刚刚查看了一些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();
}
}
我知道它用于打印字符串长度,但我在理解注释行时遇到问题。请帮助我理解为什么使用这个实现。
答案 0 :(得分:1)
实际上在java中,有2 ways to create a Thread。
提供Runnable对象。 Runnable接口定义了一个 方法,运行,意味着包含在线程中执行的代码。该 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()
方法的实现
答案 1 :(得分:1)
在这种情况下,您不需要Thread t = new Thread(h)行,因为LengthOfString扩展了Thread。但很多时候,您实现了Runnable接口。在这种情况下,您需要在构造函数中创建一个带有Runnable参数的Thread对象,因为Runnable Objects没有启动方法