1. 程式人生 > >Java中的多執行緒

Java中的多執行緒

在Java中要想實現多執行緒,有兩種方法:

  1. 繼承Thread類,重寫裡面的run()方法
  2. 實現Runable介面,重寫裡面的run()方法

那麼,到底使用哪一個方法會更好呢? 其實Thread類呼叫的run()方法就是Runable()的run()方法; 選擇實現Runable介面要比繼承Thread類好,原因如下:

  • 實現避免java中單繼承的弊端;
  • 更加的適合多個相同的程式程式碼的執行緒去處理同一個資源;
  • 增加程式碼的健壯性,程式碼可以被多個執行緒共享。

多執行緒中想實現同步有以下幾種方法: 1.把操縱共享資源的程式碼都放在sychronized(lock){}程式碼塊中 lock是一個鎖物件,他是實現同步的關鍵所在,當某一個執行緒執行共享程式碼塊的時候,其他的執行緒是無法執行程式碼塊的,必須要等到該執行緒執行完成之後,其他的執行緒再去搶奪程式碼塊的執行權,迴圈這個操作,知道共享資源被處理完了為止。

2.給方法新增sychronized關鍵字,則該方法在某一時刻只允許一個執行緒進行訪問,訪問該方法的其他執行緒都會被阻塞,直到當前執行緒執行完畢,其他的執行緒才會有機會執行方法。

死鎖問題:死鎖一般情況下就是雙方在互相等待; 發生死鎖的原因:

  • 資源共享時需要實現同步操作
  • 過多的同步,就可能會產生死鎖的情況