① java多線程並發的問題
回答這個問題需要先弄清楚線程的概念和線程的生命周期。
線程:是指程序代碼的一次執行,是動態的過程。樓主在定義OneTh這個實現Runnable介面類的時候肯定復寫了他的run()方法。onet1和onet2是兩個線程,也就是說雖然他們的run()方法相同,但是是執行了兩次的。
計算機中CPU的調度過程:現在的電腦看上去能同時實現多任務,像是一邊上QQ,一邊聽音樂,還可以一邊上網。但計算機中的CPU只有一個,它沒有分身術,不可能真正意義上實現同時運行這么多程序。而是採用了一種時間片輪轉的方式,為每個應用程序賦予極短的時間,然後高速的在不同的程序間切換,至於每次切換到那個程序,這個要由CPU和線程的優先順序來決定。
線程的生命周期:創建時是初始化了這個線程,調用start方法時,是讓這個線程進入了可運行狀態,注意是可運行,不是正在運行。就像上面說的,在某一時刻CPU具體要運行誰是由CPU和線程的優先順序決定的。當線程被CPU運行時,就會開始執行run方法,但可能執行到一半時,CPU又被其他可運行線程搶走,而只能暫停執行。
JAVA程序線程的運行:在我們使用java命令來運行程序時,這時候已經開始了兩個線程,一個是main()方法的線程,一個是垃圾回收的線程。當樓主調用start方法開啟另外兩個線程時。這時候由於CPU來決定運行哪個線程。所以雖然noet1是先開啟的,但在執行noet1時,CPU可能又去跑去執行main線程了,然後就會開啟onet2.
還有我覺得主線程結束了,只不過其他兩個線程仍在繼續運行。所以會列印出結果。
樓主如果還有什麼不明白的話可以繼續問或者相互討論。
② java多線程有什麼好處 java多線程會出現哪些問題
Java多線程的好處:
Java多線程可能出現的問題:
綜上所述,Java多線程在帶來諸多好處的同時,也伴隨著一系列潛在的問題。因此,在進行多線程編程時,需要謹慎設計同步機制、合理控制線程數量、避免死鎖等問題,以確保程序的正確性和性能。