【发布时间】:2014-01-22 00:25:44
【问题描述】:
我是 Java 世界的新手。 在学习多线程时,我遇到了这个程序:-
class Shared
{
int x;
synchronized void show(String s,int a)
{
x=a;
System.out.println("Starting in method" +s+ " " +x);
try
{
Thread.sleep(2000);
}
catch (Exception e)
{
System.out.println("Ending from method" +s+ " " +x);
}
}
}
class CustomThread extends Thread
{
Shared s;
public CustomThread(Shared s,String str)
{
super (str);
this.s=s;
start();
}
public void run()
{
s.show(Thread.currentThread().getName(),10 );
}
}
class CustomThread1 extends Thread
{
Shared s;
public CustomThread1(Shared s,String str)
{
super (str);
this.s=s;
start();
}
public void run()
{
s.show(Thread.currentThread().getName(),20);
}
}
class RunSyn
{
public static void main(String...s)
{
Shared st=new Shared();
CustomThread t1=new CustomThread(st,"one");
CustomThread1 t2=new CustomThread1(st,"two");
}
}
行是什么
super(str);
在这种情况下呢?
据我了解,它调用构造函数 Thread (String name) 的 Thread
班级。这又会创建一个新的 Thread 对象。
但是在输出中可以看到 CustomThread 和 CustomThread1 的构造函数中传递的字符串正在被传递Shared 类的 void show (String s,int a)?
请解释一下实际发生了什么?
谢谢!!
【问题讨论】:
-
super(...)与上下文无关。它始终服务于相同的目的,使用您传递给它的任何参数调用超级构造函数。
标签: java multithreading super