我在寫一個計算兩個平方矩陣乘法的簡單程序。 程序應該在我預先定義的線程數之間劃分工作。在加入所有線程之前main()端可以運行嗎?
我這樣做的方式是每個線程計算結果矩陣的不同行。
所以run()方法的每個線程執行的是:
@Override
public void run() {
for (int y = 0; y < numLines; y++)
for (int x = 0; x < matrixSize; x++)
result[startLine + y][x] = singleIndexCalc(startLine + y, x);
}
此程序是不同步(任意位置)。 所以我的問題是如果我必須照顧在結束main()方法之前加入線程,否則它並不重要,因爲線程將(肯定)完成運行並死亡。
我這樣問,因爲我不想離開正在運行的線程(當它們等待實例時可能發生的事情),但在這個例子中,它是不可能的。
謝謝!
是的。它可以。 'main'由另一個線程運行,這個線程與其他任何線程一樣,在沒有任何事情可做時退出。 –
但是,例如當涉及同步時,這不是正確的做法。由於一些線程可能會停滯不前,我不希望應用程序結束運行,並留下一些正在運行的線程......對嗎? – johni
我不知道你想要什麼,只有你知道。 –