題目描述:
我們提供了乙個類:
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 方法 請設計修改程式,以確保 ...