執行緒安全問題導致的原因:當多條語句在操作同乙個執行緒共享資料時,乙個執行緒對多條語句只執行了一部分,還沒有徹底執行完畢,此時另乙個執行緒參與進來執行,導致共享資料的錯誤。
執行緒安全解決辦法:對多條操作共享的語句,每次只能讓乙個執行緒執行完成。在執行的過程中,其他執行緒不可以參與執行。
解決方案:同步**塊。synchronized(物件) ;物件如鎖,持有鎖的執行緒可以同步執行。
哪些**需要同步:操作共享資料的**.
什麼時候使用同步:必須有多個執行緒;必須多個執行緒使用同一把鎖。
要明確的問題:哪些**是多執行緒執行的**;哪些是執行緒共享資料;哪些**是操作共享資料的。
package com.neutron.thread.demo;
/** * 1.定義類實現runnable介面
* 2.重寫runnable介面中的run方法,將執行緒要執行的**放在該run方法中。
* 3.通過thread類建立執行緒物件
* 4.將實現runnable介面的子類物件作為實際引數傳遞給thread類的構造方法中。
* 要想執行緒執行指定物件的run方法,那麼該物件必須實現runnable介面
* 5.呼叫thread類的start方法,開啟執行緒並且呼叫實現runnable介面物件的run方法。
* * @author zhanght
* */
public class tickets implements runnable
}} }
public static void main(string args)
/** thread-0 30
thread-0 29
thread-0 28
thread-0 27
thread-0 26
thread-1 25
thread-1 23
thread-1 22
thread-1 21
thread-1 20
thread-1 19
thread-1 18
thread-1 17
thread-1 16
thread-1 15
thread-1 14
thread-1 13
thread-1 12
thread-1 11
thread-1 10
thread-1 9
thread-1 8
thread-1 7
thread-1 6
thread-1 5
thread-1 4
thread-1 3
thread-1 2
thread-1 1
thread-0 24
*/}
執行緒安全問題
是指 在多個執行緒進行的情況下對全域性變數或靜態變數進行寫的操作的時候出現的資料上的問題,就是執行緒安全的問題,在讀的時候不會出現執行緒的問題 即 public void run catch interruptedexception e synchronized this 即 package com...
執行緒安全問題
由於cpu輪流切換執行緒導致某執行緒沒來的及執行完,執行緒的共享變數便直接被其他執行緒所修改。package 執行緒安全問題 public class mainclass2 class ticket extends threadcatch interruptedexception e system....
執行緒安全問題
執行緒安全問題 執行緒安全 單執行緒程式不會產生安全問題,多執行緒程式執行時,訪問各自的資源時 也不會產生執行緒安全問題。執行緒不安全 多執行緒程式執行時,訪問公共的資源。這時會產生執行緒安全問題。例如 一電影院裡面有100百張電影票,單執行緒程式相當於乙個賣票視窗,現在有多個視窗賣票,一起賣這10...