这些是我的代码中的几行:
class abc {
public static void main(String br[]){
Age age=new Age(21);
Thread th1=new Man("Thread1",age);
Thread th2=new Woman("Thread2",age);
th1.start();
th2.start();
}
}
class Age
{
int age;
Age(int a) {
this.age=a;
}
}
class Man extends Thread()
{
Age age;
Man(String name,Age age)
{
super(name);
this.age=age;
}
}
女人班完全一样。
我有三个班,年龄,男人,女人。任何人都可以解释第2和第3行发生的事情吗?我的意思是,班级的调用对象是什么?每个线程的调用对象是什么?另外,如果我在this
类中使用Man
,它会引用什么对象 - 调用对象或age
21?
答案 0 :(得分:2)
你的代码毫无意义。您正在构造一个类Man的实例,它是Thread的子类,但是您不能将任何Runnable实例传递给Thread的构造函数,并且您不能覆盖run()
方法您Thread
课程中的Man
。这意味着当您启动线程时,它将执行run()
类的默认空Thread
方法,该方法不执行任何操作并立即返回。
答案 1 :(得分:0)
不同的JVM有不同的策略将线程置于RUNNABLE状态。 同样基于run()方法的实现,线程在内存中重构或被移出或终止。
start()方法的调用对象是Thread的实例,在你的情况下是si th1和th2。