我學習線程,現在在學校裏,我們不得不編寫一個使用多線程的程序,然而,直到我用它沒有正常工作thread.join()
的Thread.join()的解釋
它像它應該現在,但我不完全確定發生了什麼。
本來我有這樣的事情。它導致線程的輸出相互衝突。
t1.start();
t2.start();
t3.start();
然後我做到了這一點,輸出結果很好,達到了正確的答案。
t1.start();
t1.join();
t2.start();
t2.join();
t3.start();
t3.join();
我的問題是,第一個例子與第二個例子相比發生了什麼?我一直在谷歌搜索和搜索stackoverflow,但似乎無法找到一個完全幫助我理解的答案。
如果你的程序沒有在調用'。加入前的工作()'那麼你最有可能遇到同步問題(沒有整個代碼很難說)。如果您在3個線程中共享和修改相同的對象,您可能需要使用某種同步方式進行研究。 – Jayfray
這正是我現在正在研究的內容,我偶然發現了一篇文章。我正在跨線程共享2D陣列。 – sbowde4
您很可能想查看'synchronized'關鍵字或[ReentrantLock](http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantLock.html) – Jayfray