![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
インターネットの記事でjava.util.Queueの使い方に関する記事を読んでいてふと思ったのですが
このQueueというものを使用する場面が想像できなかったので質問させてください。
キューを使用することで先入れ先出しで処理されると思うのですがそもそもプログラムってそういう
ものなんじゃないの?(早い者勝ちで処理される)と思ってしまいました。
例えばAさんとBさんが同じ処理を行うボタンを押したとして、Aさんのリクエストが早ければAさんの
処理、Bさんのリクエストが早ければBさんの処理が先に行われる。
そう考えるとキューというクラス(インターフェース)自体必要なの?
って思って使い道が想像がつかなかったのですがどうなのでしょうか。
※例のような動きを実現させるために必要なのであろうとは思うのですが業務アプリを作る上では
必要性について想像がつかなかったのですが使用する場面はあるのでしょうか。
No.4ベストアンサー
- 回答日時:
すこし勘違いされていると思います。
>例えばAさんとBさんが同じ処理を行うボタンを押したとして、Aさんのリクエストが早ければAさんの
>処理、Bさんのリクエストが早ければBさんの処理が先に行われる。
この『順番に処理される』というのは、内部でキューを使用しているからです。
キューやスタックは、処理を順番に行うという目的もありますが、「他の処理が終わるのを待つ」という目的もあります。
AさんとBさんが同時にボタンを押した場合、キューを使わなければ、「早い者勝ちで処理される」という部分は同じですが、
遅い人は処理を中止します。(順番に、とか、他の人が終わってから処理する、というようなことはありません。何も出来なくなります。)
この回答への補足
>>遅い人は処理を中止します。(順番に、とか、他の人が終わってから処理する、というようなことはありません。何も出来なくなります。)
このあたりの認識がありませんでした。キューは必須の概念なのですね。
ご回答ありがとうございました。
No.3
- 回答日時:
ならば
>例えばAさんとBさんが同じ処理を行うボタンを押したとして、
>Aさんのリクエストが早ければAさんの処理、Bさんのリクエストが早ければBさんの処理が先に行われる。
というのを十万人に対して、しかも処理順を間違えることなく、さらに二重押しを防ぐため処理実行はともかくリクエストを受け取ったことを早期にボタンを押した人に返信する必要がある場合を考えてみてください。
そんな場合にキューを使って、とりあえずデータを受け取って返信するスレッドとキューの先頭のデータに対して処理をするスレッドを並走させればすっきりとしたシステムになりませんか?
そして、オンライン予約システムってちょうど上記のような要求がされるシステムですよね?
No.1
- 回答日時:
キューはFIFO (先入れ先出しの待ち行列)と LIFO (後入れ先出しのスタック)があります。
例えばデータファイルを読んで(総行数を数えられる)
01/10 1行目
02/10 2行目
03/10 3行目
04/10 4行目
05/10 5行目
06/10 6行目
07/10 7行目
08/10 8行目
09/10 9行目
10/10 10行目
といった使い方ができます。
LIFOは
10/10 10行目
09/10 9行目
08/10 8行目
07/10 7行目
06/10 6行目
05/10 5行目
04/10 4行目
03/10 3行目
02/10 2行目
01/10 1行目
こんなこともできます。
データファイルと書きましたが、エディターを作るようなとき、
部分を指定して上下反転することができます。
apple char(01) 'りんご'
orange char(04) 'みかん'
grape char(05) 'グレープ'
があったら
apple char(01)
orange char(04)
grape char(05)
apple 'りんご'
orange 'みかん'
grape 'グレープ'
というような変換もできます。(データベースのテーブル作成で有効だったりする)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CPU・メモリ・マザーボード パソコンでCPUとメモリー、優先は? 11 2023/01/11 17:19
- IT・エンジニアリング 通信系アプリとは 1 2022/12/01 21:26
- エアコン・クーラー・冷暖房機 エアコンの隠ぺい配管の取り外し時の室内側処理について 3 2023/07/06 23:03
- Visual Basic(VBA) エクセルVBA コードが同じでもファイルによって処理速度が大きく変わるのはなぜ 5 2022/11/06 21:34
- 婦人科の病気・生理 生理を早く終わらせたい、もしくは生理中の性行為について。 低用量ピルを服用しており、本日で生理2日目 2 2022/12/01 03:50
- Excel(エクセル) ExcelのFSO(ファイルシステムオブジェクト)について学びたいのですが。。。 5 2022/12/15 18:06
- デスクトップパソコン 「自動修復でPCを修復できませんでした」と表示されPCが起動しないのですが対処法はありますか? 5 2022/05/13 09:16
- その他(データベース) 業務用のデータベースサーバーの選び方について 4 2022/11/22 10:22
- 知的財産権 ユーチューバーやブロガーが気を付けるべき著作権について 1 2022/08/28 21:18
- 事務・総務 帳票類やデータがありません。法人成り。 解体業の会社で現場作業員 兼 事務員として勤めているのですが 3 2023/06/02 13:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
tryの終了
-
アコーディオンメニューをアン...
-
Thread.sleep()はすべてのスレ...
-
Windowsサービスの処理
-
JSP、サーブレットの初期処理
-
Delphiのマルチスレッドの割り...
-
C#で別スレッドの終了を知りたい
-
[Java] while(true)の意味
-
Tomcat高負荷時の設定について
-
素数判定を再帰処理で
-
setTimeOutとsetInterval、どっ...
-
ラジオボタンの選択判定
-
WPF C#でF10のイベント取得方法...
-
キューについて
-
wait()したスレッドが起こされ...
-
JavaScriptからJAVAクラスを呼...
-
バッチって何でしょうか?
-
数値の定数を付ける時
-
JAVAにおける画像のJPEG保存の...
-
Servlet+JSPを使ったWEBアプリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
tryの終了
-
doGetとdoPostの違い
-
JavaScriptからJAVAクラスを呼...
-
Javaでのデバッグコード削除
-
WPF C#でF10のイベント取得方法...
-
数値の定数を付ける時
-
Tomcat高負荷時の設定について
-
Javaプログラムからポップアッ...
-
JavaでVBのDOEVENTSと同様の処...
-
JSP、サーブレットの初期処理
-
switch文の中に、throws new Ex...
-
ExcelVBA で文字列の特定の文字...
-
VBScriptでのWord印刷
-
ラジオボタンの選択判定
-
Javaアプリケーション実行の返...
-
C#で別スレッドの終了を知りたい
-
ftp 同時複数接続の負荷テスト...
-
ブラウザを閉じた後のサーバ側...
-
javaのプログラムが止まる
-
[Java] while(true)の意味
おすすめ情報