マルチスレッド

食事する哲学者はいちおう終わりました。次はエコーサーバーの作成

本当はMonitorクラスを別に設けてやりたかったが、けっきょくモニターする機能はPhilosopherクラスの1メソッドとしてインプリした。 動きとしては、左右共に箸があいているかwhileループの中でチェックする。そして、左右の箸をとる。以上の作業をsynchroniz…

ちなみにさまざまなパターンの資料はこちら

英語なので読むのが大変だが、しかしこの資料の山は宝の山ですIndex of /~schmidt/PDF

食事する哲学者問題の解決が課題

問題自体は大変有名なものらしい(食事する哲学者の問題 - Wikipedia)。今回は簡単にするために思索の時間がなくなっている。微妙な違いとして、フォークの代わりに箸になっている。 Philosoperクラス、Chopstickクラスを作った。 ChopstickクラスではSemap…

マルチスレッドのプログラミングは慣れが必要

あんまりに並行プログラミングがわからないので、評判を参考にこんな本を買いました。(以下はAmazonアフィリエイト) しかしながら、マルチスレッドは本読んでるだけではさっぱりだなあ、と思いまして、7ページを参考にこういうコードを書いてみた。 publi…

Week4のスレッド書き直し

さすがに、notify...wait...notifyは気持ち悪いので書きなおすことにした。もうあっさりと、runメソッドの中でwhileとかfor使って回すのはあきらめて、一回だけ出力するようにした。その代わり呼び出す側で、forループのなかから、スレッドたちのrunを呼び出…

Week4のスレッドのプログラミング終わった、、、しかし

すごく変だがとりあえず課題通りに動くからいいや、というひどい妥協。なにしろrunメソッドがこんな変な感じ。 public void run() { for (int i = 0; i < count; i++) { synchronized (lock) { try{ System.out.println(sound); lock.notify(); lock.wait();…