与えられたプログラムについて、私が期待したものが得られなかったので、あなたは説明できますか?
package javaapplication14;
class Mythread implements Runnable{
String myname;
int myage;
public Mythread( String par_name, int par_age){
myname = par_name;
myage = par_age;
}
public void run(){
try{
for(int i=1; i<=myage; i++) {
System.out.println("Happy birthday "+myname);
Thread.sleep(2000);
}
}catch(Exception e){
System.out.println();
}
}
}
public class JavaApplication14 {
public static void main(String[] args) {
Mythread m = new Mythread("Mutinda ", 2);
Mythread p = new Mythread("Boniface", 2);
Thread k = new Thread(m);
Thread q = new Thread(p);
k.start();
q.start();
Thread t = new Thread(m);
try{
for( int i=1; i<=5; i++){
System.out.println("Main thread executing");
Thread.sleep(1000);
}
}catch(Exception e){
System.out.println("Thread interrupted");
}
}
}
そして、これは私の出力でした:
Main thread executing
Happy birthday Boniface
Happy birthday Mutinda
Main thread executing
Main thread executing
Happy birthday Boniface
Happy birthday Mutinda
Main thread executing
Main thread executing
私はこれを期待しました:
Main thread executing
Happy birthday Mutinda
Happy birthday Boniface
Main thread executing
Main thread executing
Happy birthday Mutinda
Happy birthday Boniface
Main thread executing
Main thread executing
スリープ時間に関係なく、の出力がより最初のスレッドk
になるように、2つのスレッドに設定された優先順位を説明してくれる人が必要です。q
q
k
私の議論:k.start()
の前に呼び出されたので、最初に呼び出したのでq.start()
、出力はで始まると予想されk
、2つは同じスリープ時間を取ります。