多線程筆記
1、同步線程初始化時,可以向線程傳入對象,就存在多條同類型的線程存取同一對象,帶來對象的值不同步的問題。
JVM方案,采用鎖機制,線程的run代碼里,使用同步關鍵字,同步該對象,由于一個對象只有一個鎖,沒取得鎖的線程,就只能處于等待的狀態了,run方法執行完,則鎖就被釋放了,下一個線程是哪個,不確定,由他們進行競爭鎖,誰取得,誰就可以先上。
2、wait()
這是Object的方法,執行這個對象的wait()方法并不是去執行該對象里面的wait方法,而是通知JVM暫停鎖定了該對象的線程的run方法,進入等待狀態,同時也釋放該鎖,使得另外的同類線程有機會執行
3、synchronized
在方法前加synchronized,相當于線程的run方法中先同步資源對象,再且僅執行一個該方法。
4、start()
調用線程的start方法,并不會立即執行run方法,而是由JVM決定JVM里那一堆線程,哪個先執行,再執行run方法
posted on 2011-12-29 01:26 paulwong 閱讀(227) 評論(0) 編輯 收藏 所屬分類: 性能優化