防止並行存取程式碼區段。如有多位使用者或程序修改共用資源,且想要防止衝突,這項功能就非常實用。
方法
方法 | 傳回類型 | 簡短說明 |
---|---|---|
getDocumentLock() | Lock | 取得鎖定,防止目前文件的任何使用者同時執行某區段的程式碼。 |
getScriptLock() | Lock | 取得鎖定,防止任何使用者同時執行某部分程式碼。 |
getUserLock() | Lock | 取得鎖定,防止目前使用者同時執行某部分的程式碼。 |
內容詳盡的說明文件
getDocumentLock()
取得鎖定,防止目前文件的任何使用者同時執行某區段的程式碼。受文件鎖定保護的程式碼區段可由在不同文件環境執行的指令碼執行個體同時執行,但任何特定文件只能執行一次。請注意,實際上要等到呼叫 Lock.tryLock(timeoutInMillis)
或 Lock.waitLock(timeoutInMillis)
後才會取得鎖定。如果在包含文件的內容之外 (例如獨立指令碼或網頁應用程式) 呼叫此方法,會傳回 null
。
回攻員
Lock
:鎖定範圍,限定於指令碼和目前的文件;如果是從獨立指令碼或網頁應用程式呼叫,則為 null
getScriptLock()
取得鎖定,防止任何使用者同時執行某部分程式碼。受到指令碼鎖定保護的程式碼區段無法同時執行,無論使用者身分為何。請注意,實際上要等到呼叫 Lock.tryLock(timeoutInMillis)
或 Lock.waitLock(timeoutInMillis)
後才會取得鎖定。
回攻員
Lock
:範圍限定為指令碼的鎖定
getUserLock()
取得鎖定,防止目前使用者同時執行某部分的程式碼。受使用者鎖定保護的程式碼區段可以同時由不同使用者執行,但任何特定使用者只能執行一次。鎖定狀態會設為「私人」狀態。請注意,實際上必須等到呼叫 Lock.tryLock(timeoutInMillis)
或 Lock.waitLock(timeoutInMillis)
後,才會取得鎖定。
回攻員
Lock
:範圍限定為指令碼和目前使用者