不清楚这个线程的概念

时间:2013-09-30 13:11:18

标签: java synchronization

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提前!

1 个答案:

答案 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()方法上运行(可能目的是演示同步)。