Asameshi00/Botanical-Garden
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
## 取扱説明 (コンパイル&実行方法) このBotanical-Garden下で下記のコマンド(Makefile)を入力してもらうと動作が始まります。出力のtest:項目に来場者数が表示されるようになっています。 $ make test 一度コンパイルするとBotanical-Garden/Classes内に*.classファイルが保存されてるため、消したい場合は下記のコマンド(Makefile)を入力してください。 $ make clean ## 実行結果 (どのような実行結果になるか?) 実行すると、『来場者数: 2000』と出力されます。 ## 考察 (なぜそのような結果になったか?問題点と改善策,類似問題などを書く, 300字以上) 実行すると、『来場者数: 2000』と出力されるのは、Turnstile.java内のrunメソッドで1000回カウンタしているため、東門と西門の両方で2000人となるのは確かです。 しかし、各門の来場者を1000人、10000人のように増やせば増やすほど実行時間が長くなります。 この問題点の改善策として、スレッドのsleep時間を調整することです。 スレッドをカウンタしたらsleep状態に遷移させ、そのsleep時間を短くすることで実行時間を短くすることができます。 しかし、とsleepメソッドの秒数指定はlong型で、精々1秒が限界であるため、早くするには限度がありそうです。 このような並列処理の類似問題として、例えばウェブサーバーのアクセスカウンタがあります。 複数のユーザーが同時にウェブサイトにアクセスする際に、各アクセスを正確にカウントする必要があります。 この場合も、複数のスレッドが同時にカウンタを更新するため、適切な同期処理が必要です。