1114 按序列印

2022-05-13 09:00:36 字數 1599 閱讀 1807

我們提供了乙個類:

public class foo

public void second()

public void third()

}三個不同的執行緒將會共用乙個 foo 例項。

執行緒 a 將會呼叫 first() 方法

執行緒 b 將會呼叫 second() 方法

執行緒 c 將會呼叫 third() 方法

請設計修改程式,以確保 second() 方法在 first() 方法之後被執行,third() 方法在 second() 方法之後被執行。

示例 1:

輸入: [1,2,3]

輸出: "firstsecondthird"

解釋:

有三個執行緒會被非同步啟動。

輸入 [1,2,3] 表示執行緒 a 將會呼叫 first() 方法,執行緒 b 將會呼叫 second() 方法,執行緒 c 將會呼叫 third() 方法。

正確的輸出是 "firstsecondthird"。

示例 2:

輸入: [1,3,2]

輸出: "firstsecondthird"

解釋:

輸入 [1,3,2] 表示執行緒 a 將會呼叫 first() 方法,執行緒 b 將會呼叫 third() 方法,執行緒 c 將會呼叫 second() 方法。

正確的輸出是 "firstsecondthird"。

from threading import

lock

class

foo:

def__init__

(self):

self.firstjobdone=lock()

self.secondjobdone=lock()

self.firstjobdone.acquire()

self.secondjobdone.acquire()

def first(self, printfirst: '

callable[, none]

') ->none:

#printfirst() outputs "first". do not change or remove this line.

printfirst()

self.firstjobdone.release()

def second(self, printsecond: '

callable[, none]

') ->none:

with self.firstjobdone:

#printsecond() outputs "second". do not change or remove this line.

printsecond()

self.secondjobdone.release()

def third(self, printthird: '

callable[, none]

') ->none:

with self.secondjobdone:

#printthird() outputs "third". do not change or remove this line.

printthird()

1114 按序列印

題目描述 我們提供了乙個類 public class foo public void two public void three 三個不同的執行緒將會共用乙個 foo 例項。執行緒 a 將會呼叫 one 方法 執行緒 b 將會呼叫 two 方法 執行緒 c 將會呼叫 three 方法請設計修改程式,...

1114 按序列印

我們提供了乙個類 public class foo public void two public void three 三個不同的執行緒將會共用乙個 foo 例項。執行緒 a 將會呼叫 one 方法 執行緒 b 將會呼叫 two 方法 執行緒 c 將會呼叫 three 方法 請設計修改程式,以確保 ...

Leetcode 1114 按序列印

我們提供了乙個類 public class foo public void two public void three 三個不同的執行緒將會共用乙個 foo 例項。執行緒 a 將會呼叫 one 方法 執行緒 b 將會呼叫 two 方法 執行緒 c 將會呼叫 three 方法 請設計修改程式,以確保 ...