import java.lang.*;
class MyRun implements Runnable
{
public static int start = 0;
public void run()
{
int myCounter = 0;
System.out.println(Thread.currentThread().getName()+" is waiting on start flag");
while(start<1)
{
// just waiting...
}
while(myCounter<5)
{
myCounter++;
System.out.println(Thread.currentThread().getName()+" : "+myCounter);
try
{
Thread.sleep(1000);
} catch(Exception ex) {}
}
System.out.println(Thread.currentThread().getName()+" stopped and start="+start);
}
}
public class test
{
public static void main(String[] args)
{
Thread[] threads = new Thread[10];
for(int i=0; i<10; i++)
{
int p = i+1;
threads[i] = new Thread(new MyRun());
threads[i].setName("TH"+p);
threads[i].setPriority(p);
threads[i].start();
}
MyRun.start=1; // signaling GO
}
}
TH1 is waiting on start flag
TH2 is waiting on start flag
TH3 is waiting on start flag
TH4 is waiting on start flag
TH5 is waiting on start flag
TH6 is waiting on start flag
TH8 is waiting on start flag
TH7 is waiting on start flag
TH9 is waiting on start flag
TH10 is waiting on start flag
TH10 : 1
TH10 : 2
TH10 : 3
TH10 : 4
TH10 : 5
TH10 stopped and start=1
我是從爲開始標誌設置爲1,但只執行名稱TH10線程的所有線程期待輸出。
你能幫我找出在這段代碼中發生什麼事嗎?
我想用這樣的代碼做什麼?
Ans:嘗試分析線程的優先級(特別是使用共享靜態變量超過可運行時清除我的線程概念,特別是多線程)。
在此先感謝您,讓我知道您是否需要我身邊的任何信息。
更新:將所有線程視爲馬,當MyRun.start設置爲1(它應該被視爲所有馬的GO信號),但只有第10匹馬在信號後運行。
對不起,這不是StackOverflow的是如何工作的。問題形式_「這是我的一堆代碼,請爲我調試」_被認爲是無關緊要的。請訪問[幫助]並閱讀[問]以獲取更多信息。 –
我認爲這是一個合適的問題,因爲它是關於一個特定的問題,而不僅僅是「我的代碼不工作」 – Mike76
@JimGarrison在所有方面,我沒有要求調試它,但它只發生在優先事項時,沒有優先權它的完美。所以我錯過了線程優先級的概念,,,所以需要在該領域的幫助。 –