Java thread run() start() 是干什么的?為什么一調他們就開始運行里面的方法了?以及區別?
1.這個屬於線程的同步機制問題,也就是線程安全問題,實際開發中用到多線程的例子很多,比如說:銀行排號、火車站買票等,就是很多機器同時訪問共享數據的時候就是這個了。
2.線程啟動之后(被調之后),會運行被覆蓋的run方法。
3.先說用thread.run()來啟動線程,會順序執行,run啟動一條線程之后將這條線程走完之后,才執行下面的run,想想火車站排票?要是用run就等於一條長蛇隊了。
再說用thread.start來啟動線程,這個才是真正實現了多線程運行,thread.start()不用等待被覆蓋的run執行完也可以直接繼續執行下面的代碼,線程處於就緒狀態,交替執行直到結束。
這個是繼承了thread的一個類,也算是線程類了吧。
這個是調用run()之后的結果:
這個是調用start()的結果:
好了,start()和run()的區別就是這個樣子了。