推 Harifucks:那原程式要怎麼修改才能變成Thread-Safe? 06/09 23:38
推 laxw:Google "how to kill singleton" 06/10 00:15
推 opman:這種專教 thread 的章節,應該都會提, 06/10 09:37
→ opman:不同語言會有不同語法,但大約都是那幾種 06/10 09:38
→ opman:基本上不是 singleton 有問題, 06/10 09:39
→ opman:而是寫 thread 的人,對 thread 不熟,才會誤用都不知道. 06/10 09:39
→ opman:這年頭,懶得買書來看的,好像越來越多. 06/10 09:41
→ opman:應該是說懶得看書啦. 圖書館有免費的,經典書籍通常會有. 06/10 09:41
→ opman:有的連 網路搜尋都很少在用. 06/10 09:43
推 tangblack:我沒記錯的話! Thread 不是要用 start() 來開始? 06/10 12:44
→ kimkao:看一下這個api說明吧 06/11 09:26
→ kimkao: Causes this thread to begin execution; 06/11 09:26
→ kimkao:the Java Virtual Machine calls the run method of 06/11 09:26
→ kimkao:this thread. 06/11 09:27
推 tangblack:我想表達的是 06/11 13:12
→ tangblack:若直到呼叫run(),就變成單純呼叫物件上的方法. 06/11 13:13
→ tangblack:而不是多線程(Thread)的並行行為. 06/11 13:14
→ tangblack:而是樓主本來就只想要建立兩個物件然後輪流呼叫 06/11 13:15
→ tangblack:它們的run(). 06/11 13:15
→ tangblack:所以上述main的程式碼我看到的次序 06/11 13:16
→ tangblack:應該永遠是 t1.run()->t2.run()->t1.run() 06/11 13:17
→ tangblack:依序執行 而非 多線程的執行方式. 06/11 13:18
推 tangblack:關於樓主回覆API中說明文字: 06/11 13:27
→ tangblack:我認為應該是指 多線程要透過 start()呼叫run()來啟動! 06/11 13:28
→ tangblack:而start()也只能被呼叫一次! 否則會發生執行期錯誤! 06/11 13:29
→ tangblack:不知這樣解釋是否有讓樓主知道我在問什麼? 06/11 13:30
→ tangblack:我想知道樓主直接呼叫run()的理由! 06/11 13:31
→ tangblack:是誤用? 06/11 13:32
→ tangblack:還是要解釋ThreadSafe行為?(若是此情況我就看不懂code) 06/11 13:32
→ kimkao:多謝tangblack說明,其實我上述的api說明原本只是要說 06/11 13:42
→ kimkao:start()會呼叫run()而已,但確實是真的應該要用start()才能 06/11 13:43
→ kimkao:真正達成多線程處理..感謝指正! 06/11 13:44
※ 編輯: kimkao 來自: 61.221.67.235 (06/11 13:46)
→ kimkao:另外!我引述的確實不能完整說明ThreadSafe..可以砍這篇了 06/11 14:50
推 tangblack:感謝樓主回覆!我跑回去翻書也算是復習忘記的東西!:) 06/11 15:07