多線程對同一個對象操作


多線程實現的兩種方式:

  繼承Thread類

  實現Runnable接口

這兩種方式都必須重寫run()方法。

當多線程對同一個對象操作時,必須實現Runnable接口,而不能繼承Thread類。因為繼承Thread類實現多線程時,操作的是不同的對象。

1 Runnable r=new RunnableImpl();
2 Thread t1=new Thread(r);
3 Thread t2=new Thread(r);
4 t1.start();
5 t2.start();
View Code

兩個線程傳同一個對象,相當於這兩個線程對同一個對象進行操作。

注意:多線程對同一個對象操作的時候一定要加鎖synchronized,同時傳一個鎖旗標。

   加鎖時,原則上要雙重檢查。

   鎖旗標對同一個對象有用,如果是兩個對象,則這兩個對象分別有自己的鎖旗標,此時鎖旗標就會失效。

   synchronized不僅可以加在代碼塊上,還可以加在方法上。當加在方法上時,鎖旗標是this,誰調用這個方法,this就是誰,只要是同一個對象就行。

   synchronized提高了安全性,降低了性能。

 

若有錯誤之處,歡迎指正。謝謝!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM