1114 按序列印

2021-09-29 02:45:45 字數 1721 閱讀 8050

題目描述:

我們提供了乙個類:

public class foo

public void two()

public void three()

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

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

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

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

請設計修改程式,以確保 two() 方法在 one() 方法之後被執行,three() 方法在 two() 方法之後被執行。

示例 1:

輸入: [1,2,3]

輸出: 「onetwothree」

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

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

正確的輸出是 「onetwothree」。

示例 2:

輸入: [1,3,2]

輸出: 「onetwothree」

解釋:輸入 [1,3,2] 表示執行緒 a 將會呼叫 one() 方法,執行緒 b 將會呼叫 three() 方法,執行緒 c 將會呼叫 two() 方法。

正確的輸出是 「onetwothree」。

class

foopublic

void

first

(runnable printfirst)

throws interruptedexception

public

void

second

(runnable printsecond)

throws interruptedexception

public

void

third

(runnable printthird)

throws interruptedexception

}

方案選擇:用鎖synchronized

volatile

int stage =1;

object lock =

newobject()

;public

void

first

(runnable printfirst)

throws interruptedexception

catch

(exception e)

}public

void

second

(runnable printsecond)

printsecond.

run();

stage =3;

//釋放所有的鎖

lock.

notifyall()

;}catch

(exception e)

}public

void

third

(runnable printthird)

printthird.

run();

//釋放所有的鎖

lock.

notifyall()

;}catch

(exception e)

}

1114 按序列印

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

1114 按序列印

我們提供了乙個類 public class foo public void second public void third 三個不同的執行緒將會共用乙個 foo 例項。執行緒 a 將會呼叫 first 方法 執行緒 b 將會呼叫 second 方法 執行緒 c 將會呼叫 third 方法 請設計修...

Leetcode 1114 按序列印

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