Skip to content

Asameshi00/Botanical-Garden

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

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秒が限界であるため、早くするには限度がありそうです。
このような並列処理の類似問題として、例えばウェブサーバーのアクセスカウンタがあります。
複数のユーザーが同時にウェブサイトにアクセスする際に、各アクセスを正確にカウントする必要があります。
この場合も、複数のスレッドが同時にカウンタを更新するため、適切な同期処理が必要です。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors