1115 交替列印FooBar

2021-09-29 02:45:45 字數 1466 閱讀 6168

題目描述:

我們提供乙個類:

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 次。建立兩個互斥...