Kav*_*nna -2 java multithreading
我使用线程概念尝试了以下代码.在这段代码中,我在两个不同的类中声明了两个run方法.我从我的main方法中调用了这些方法.其实我想知道的是,首先调用哪个run()方法?当我一次又一次地跑步时,我得到了相同代码的不同输出.
我的代码:
class parent
{
public synchronized void display1()
{
System.out.println("Dispaly_1 is invoked");
}
public synchronized void display2()
{
System.out.println("Dispaly_2 is invoked");
}
}
class abc extends Thread{
parent p;
public abc(parent p){
this.p = p;
}
public void run(){
System.out.println("abc start...");
p.display1();
}
}
class xyz extends Thread{
parent p;
public xyz(parent p){
this.p = p;
}
public void run(){
System.out.println("xyz start...");
p.display2();
}
}
public class ThreadExample {
public static void main(String[] args) {
parent p=new parent();
abc ob=new abc(p);
xyz ob1=new xyz(p);
ob.start();
ob1.start();
}
}
Run Code Online (Sandbox Code Playgroud)
输出:第一次
abc start...
xyz start...
Dispaly_2 is invoked
Dispaly_1 is invoked
Run Code Online (Sandbox Code Playgroud)
第二次
xyz start...
Dispaly_2 is invoked
abc start...
Dispaly_1 is invoked
Run Code Online (Sandbox Code Playgroud)
第3次
abc start...
Dispaly_1 is invoked
xyz start...
Dispaly_2 is invoked
Run Code Online (Sandbox Code Playgroud)
我对此输出感到困惑,任何人都可以解释这个代码的结果.你的帮助会很感激.谢谢
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |