多執行緒 同步與死鎖

2021-07-08 12:33:06 字數 1444 閱讀 1991

多個操作在同一時間內 只能有乙個執行緒執行,其他執行緒要等此執行緒完成之後才能繼續執行。

要解決資源共享的同步操作問題,可以使用同步**塊和同步方法完成。

1.1 同步**塊

**塊分四種:

(1) 普通**塊:是直接定義在方法之中的。

(2)構造塊:是定義在類中的,優先於構造方法執行,可以重複呼叫

(3)靜態塊:是使用static關鍵字宣告,又相遇構造塊執行,只執行一次

(4)同步**塊:使用synchronized關鍵字宣告,為同步**塊

格式

synchronized(同步物件)//當前物件作為同步物件 使用this表示

class

mythread

implements

runnable

catch (interruptedexception e)

system.out.println("賣票 ticket:"+ ticket--) ;}}

}}

}public

class

syncdemo01

}

使用同步操作,不會出現負數,但是程式執行效果下降

1.2 同步方法

使用synchronized關鍵字將乙個方法宣告成同步方法

格式

synchronized 方法返回值 方法名稱(引數列表){}

class

mythread

implements

runnable

}public synchronized void sale() //宣告同步方法 賣票

catch (interruptedexception e)

system.out.println("賣票 ticket:"+ ticket--) ;}}

}public

class

syncdemo02

}

a 資源共享的時候需要進行同步操作

b 程式中過多的同步會產生死鎖

死鎖 一般情況下就是表示 在互相等待 。

修改標記位 來 停止執行緒

class

mythread

implements

runnable

}public

void stop() //定義stop方法

}public

class

threadstopdemo01

catch (interruptedexception e)

mt.stop() ; //停止執行緒 //物件.方法()

}}

多執行緒 同步與死鎖

程序 是程式的執行過程 是乙個動態的 程序中持有資源 共享記憶體,共享檔案 和執行緒 執行緒 是系統中最小的執行單元,同一程序中有多個執行緒,執行緒共享程序的資源 多執行緒圖 執行緒的5種狀態 同步什麼時間用 資源共享時需要進行同步操作 同步的缺點 程式中過多的同步會產生死鎖 經典案例 生產者消費者...

多執行緒(三) 同步與死鎖

了解執行緒同步的作用 乙個多執行緒的程式,如果是通過runnable介面實現的,則意味著類中的屬性將被多個執行緒共享,那麼這樣一來就會造成一種問題,如果這多個執行緒要操作同一資源的時候就有可能出現資源的同步問題。例如 以之前的賣票程式來講,如果多個執行緒同時操作的時候就有可能出現賣出票為負數的問題。...

執行緒同步與死鎖

執行緒同步與死鎖 課程大綱 一 多執行緒共享資料 1 在多執行緒的操作中,多個執行緒有可能同時處理同乙個資源,這就是多執行緒中的共享資料。二 執行緒同步 1 解決資料共享問題,必須使用同步,所謂同步就是指多個執行緒在同乙個時刻只能有乙個執行緒執行指定 其他執行緒要等到該執行緒執行結束之後才能繼續執行...