題目描述:
我們提供乙個類:
class foobar
}public void bar() }}
兩個不同的執行緒將會共用乙個 foobar 例項。其中乙個執行緒將會呼叫 foo() 方法,另乙個執行緒將會呼叫 bar() 方法。
請設計修改程式,以確保 「foobar」 被輸出 n 次。
示例 1:
輸入: n = 1
輸出: 「foobar」
解釋: 這裡有兩個執行緒被非同步啟動。其中乙個呼叫 foo() 方法, 另乙個呼叫 bar() 方法,「foobar」 將被輸出一次。
示例 2:
輸入: n = 2
輸出: 「foobarfoobar」
解釋: 「foobar」 將被輸出兩次。
class foobar
public void foo(runnable printfoo) throws interruptedexception
}public void bar(runnable printbar) throws interruptedexception
}}
方案選擇:用鎖synchronized
class
foobar
public
void
foo(runnable printfoo)
throws interruptedexception
permitfoo=
false
; printfoo.
run();
lock.
notifyall()
;}}}
public
void
bar(runnable printbar)
throws interruptedexception
printbar.
run();
permitfoo=
true
; lock.
notifyall()
;}}}
}
測試
public
class
test);
}catch
(interruptedexception e)})
; thread t2 =
newthread((
)->);
}catch
(interruptedexception e)})
; t1.
start()
; t2.
start()
;}}
1115 交替列印FooBar
我們提供乙個類 class foobar public void bar 兩個不同的執行緒將會共用乙個 foobar 例項。其中乙個執行緒將會呼叫 foo 方法,另乙個執行緒將會呼叫 bar 方法。請設計修改程式,以確保 foobar 被輸出 n 次。示例 1 輸入 n 1 輸出 foobar 解釋...
1115 交替列印FooBar
題目描述 我們提供乙個類 class foobar public void bar 兩個不同的執行緒將會共用乙個 foobar 例項。其中乙個執行緒將會呼叫 foo 方法,另乙個執行緒將會呼叫 bar 方法。請設計修改程式,以確保 foobar 被輸出 n 次。示例 1 輸入 n 1 輸出 foob...
力扣1115 交替列印FooBar
力扣1115.交替列印foobar 我們提供乙個類 class foobar public void bar 兩個不同的執行緒將會共用乙個 foobar 例項。其中乙個執行緒將會呼叫 foo 方法,另乙個執行緒將會呼叫 bar 方法。請設計修改程式,以確保 foobar 被輸出 n 次。建立兩個互斥...