class A extends Thread {
ThreadDemo demo;
public A(ThreadDemo td) {
demo = td;
}
public void run() {
demo.doSomething();
}
}
public class ThreadDemo {
int count = 1;
public synchronized void doSomething() {
for (int i = 0; i < 10; i++)
System.out.println(count++);
}
public static void main(String[] args) {
ThreadDemo demo = new ThreadDemo();
A a1 = new A(demo);
A a2 = new A(demo);
a1.start();
a2.start();
}
}
1.想要在此代码中了解此构造函数的需要。并解释演示参考如何在A类中起作用
p.s:我是这个概念的新手,所以PLZ帮助我提供有价值的答案! thnx提前!
答案 0 :(得分:2)
1.为什么将演示obj传入A类?
因为你已经定义了A类的构造函数。
public A(ThreadDemo td)
{
demo = td;
}
2.如果我更换A a1 = new A(演示); with Thread a1 = new Thread(demo);它会生成构造函数Thread.Thread(ThreadGroup,Runnable,String,long)不适用(实际和形式参数列表的长度不同)为什么会出现此错误?
因为Thread类没有将ThreadDemo类的对象作为参数。但是,使用多态性可以执行类似
的操作Thread a1 = new A(demo);
3.为什么他们在A级传递demo作为参考
我认为您打算问why they are passing the same reference in both the threads
或答案与第一个问题相同。它们传递相同的引用,因此只有一个线程可以在ThreadDemo类的doSomething()方法上运行(可能目的是演示同步)。