• 締切済み

別プロセスの起動

別プロセスの起動について質問があります。 Java、Servlet、JSPを使って検索画面、検索処理を作っています。 レコード件数が何万件もあるので、検索処理を別プロセス(別クラス)で実行したいと考えています。 クラス構成は、 1.検索条件受け取りクラス 2.検索処理クラス 検索条件受け取りクラスで、検索条件をオブジェクトにし、そのオブジェクトを検索処理クラスの引数に渡し、別プロセスとして実行するような感じで考えています。 ※スレッドでの実装は、メモリを消費するため考えておりません。 実装方法やサンプルをよろしくお願いします。

  • Java
  • 回答数2
  • ありがとう数0

みんなの回答

  • masusun
  • ベストアンサー率15% (44/285)
回答No.2

検索ではなく登録や削除処理というのであれば話は別ですが、 IF機能と検索機能を別プロセスにするのであれば スレッド実装しなければ意味が無いのでは? 並列処理するからこそ別プロセスに分けてまで処理する意義があると思います。 また、スレッド管理なしに同期処理の実現は難しいと思いますよ。 1の方がおっしゃるように検索結果を画面に表示するのであれば プロセス分ける云々の概念は頭から消したほうがいいのでは?

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.1

プロセスかスレッドかはとりあえず置いておいて、、、 メインのプロセスは検索処理の最中に何をしているのでしょうか? 応答を返してしまったら、そこでコネクションが終了しますから、検索結果を返すことはできません。 検索処理の終了を待っているのであれば、わざわざ別プロセスで行う必要はありません。 その辺のことは考慮済みですか?

関連するQ&A

  • 別プロセスをの実行パスを取得したいのですが

    自作のアプリケーション実行中に、全く無関係の別のプロセス(つまりprocess.start()等でそのアプリケーションから実行したプロセスではないということです)をDiagnostics.Processクラスのオブジェクトとして取得することはできると思うのですが、取得したプロセスの実行パスを何とかして調べる方法はないものでしょうか?

  • インターフェイスの使い方がわかりません(初心者です)

    Javaを始めたばかりの初心者です。 「やさしいJava」を買って一通り学んだのですが、 インターフェイスの使い方がよくわからず、困っています。 インターフェイスを実装することでインターフェイスが持つメソッドがすべて定義されてることが保障される、 というのはわかるんですが、そのことがどうして有用なのでしょう? また、具体的にはスレッドを扱うときにRunnableインターフェイスを実装する理由がわかりません。 Threadクラスのオブジェクトを作成するときに、 Runnableを実装したクラスのオブジェクトの変数を 引数にしないといけないんですよね? このとき、Runnableインターフェイスが 「runメソッドが定義されていなければならない」 とだけいうものだったとしたら、 Runnableを実装してなくてもrunメソッドさえ定義してあれば 実行できそうな気がするんですが・・・

    • ベストアンサー
    • Java
  • プロセスのハンドルと識別子

    エディットやボタンなどへのアクセスは、ウインドウハンドルを使ってそれらのオブジェクトにアクセスしているんだと考えられますが、 プロセスやスレッドにはハンドルと識別子の両方があるので、その違いが分かりません。 あるスレッドが動いていて、それを止める場合、そのスレッドのハンドルを使うのか識別子を使うのかが想像できるようになりたいのです。 プロセスを終わらせる関数を見つけ、その関数の引数の型を調べるのではなく、ハンドルと識別子の違いを理解して、それを想像する方法を教えてください。

  • サーブレットから別フレームのパラメータを取り出すことは可能でしょうか?

    はじめまして。 JAVA&サーブレット初心者です。 現在、サーブレット、JSPを使ったWEBアプリケーションの開発をしてお ります。 左右二つに分かれたフレームを持つWEBアプリケーションを作っています。 大まかな流れとしては以下の通りです。  (1)左側のフレーム(仮にleft.jspとします)からサーブレット  (仮にservlet1とします)を呼び出す。  (2)右側フレームに(1)の処理結果のJSP(right1.jsp)を呼び出す  (3)right1.jspでサーブレット(servlet2)を呼び出す。  (4)右側フレームに(3)の処理結果のJSP(right2.jsp)を呼び出す。  (5)right2.jspでサーブレット(servlet3)を呼び出す。  (6)右側フレームに(5)の処理結果のJSP(right3.jsp)を呼び出す。   上記のように左側フレームが固定で右側フレームのJSPがサーブ  レット処理によって切り替わるようなWEBアプリケーションを開発し  ています。    問題なのは、今回開発しているシステムの要件により、(5)で呼び出され るサーブレット(servlet3)内の処理で左側のフレーム(left.jsp)の入力 パラメータが必要だということです。  servlet1でleft.jspの入力パラメータをセッションオブジェクトに保管 し、servlet3でセッションオブジェクトから復元すれば実現は可能かと思 いました。  しかし、途中servlet2からの処理が大変重いものであり、セッションオ ブジェクトは一定時間がたつと無効になってしまうと聞いたのでタイトル のような方法を考えたのですが、見当がつかず、今回の質問に至りました。  request.getParameter("****"); ではもちろん取り出せないと思いますが、サーブレットで別フレームのパ ラメータを取り出すことは可能でしょうか?

    • ベストアンサー
    • Java
  • 【C++】セマフォとプロセスの使い方

    【C++】セマフォとプロセスの使い方 WindowsXPでVC++2008コンパイラを使用して、 プロセスとセマフォについて勉強しています。 外部プログラム(今回は電卓として)を5つ立ち上げるのですが、 同時に立ち上げるのは2つまでとしたい場合、どのように組むのでしょうか。 http://nienie.com/~masapico/api_CreateSemaphore.html こちらにスレッドを使用したセマフォを使ったサンプルがあるのでが、 プロセスを使うとなると、うまく書けません。 ご指導頂けませんでしょうか。 ===現在まで書いたソース=== (5つのプロセスをつくるループも実装していませんが、、、) #include<windows.h> #include<stdio.h> #include<tchar.h> HANDLE g_hSemaphre; void main(){ BOOL bRet; STARTUPINFO si; PROCESS_INFORMATION pi; //Semaphoreオブジェクト g_hSemaphre = CreateSemaphore(NULL,2,2,NULL); bRet = CreateProcess(_T("C:\\WINDOWS\\system32\\calc.exe"), _T(""), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); //プロセス終了 WaitForSingleObject(pi.hProcess,INFINITE); //後処理(プロセス開放) ReleaseSemaphore(g_hSemaphre,1,NULL); //スレッドとプロセスを閉じる。 CloseHandle(pi.hThread); CloseHandle(pi.hProcess); //Semaphoreオブジェクト CloseHandle(g_hSemaphre); }

  • tomcat psコマンドでスレッドのプロセスが見れません。。

    はじめまして。 JDK1.4.2-13 + tomcat5.0.28 + RHEL3でWEBアプリ環境を 構築しています。 Linux上ではJavaの1スレッドが1プロセスとして 実行されていると思いますが、この1スレッドをpsコマンドが 見た時になぜか表示されません。tomcat本体のjavaプロセスは 確認できるのですがスレッドに当たるプロセスが見えません。 topコマンドでは処理させた時にjavaというプロセスが 処理に応じて上位に表示されるのですが、この時に、 ps -ef | grep java でJavaプロセスを確認しようとしてもどうしても 見ることができません。。 linux上でtopコマンドとpsコマンドでは表示されるプロセス に違いがあるのでしょうか? WEBで調べてみてもみなさんpsコマンドでtomcatのJavaスレッド プロセスが確認できているようなので質問させて頂きました。 宜しくお願いします。

    • ベストアンサー
    • Java
  • startメソッドについて。

    アプレット(AWT)を勉強している初心者です。 startメソッドというのはクラスの中に実装したら自動的に実行されるものなのでしょうか? あるスレッドのクラスをインスタンス化して、そのオブジェクトの中のstart()を実行することによって、スレッドが実行される、と思っているのですが、裸でstartメソッドが実装されているようなんです。 ソースは下記のサイトの3-3の落ちモノゲームです。この本を使って勉強しています。 http://www.muse.dti.ne.jp/~yoji/book/book001.html よろしくお願いします。

    • ベストアンサー
    • Java
  • .NetのBackgroundWorkerクラスについての質問です。

    .NetのBackgroundWorkerクラスについての質問です。 BackgroundWorkerクラスなるものを知るまでは、Threadクラス等でマルチスレッドを実装していました。 MSDNを読みながら、実装自体は非常に簡単に出来ましたが、このバックグラウンドスレッドとは如何なるものなのでしょうか。 フォアグラウンド/バックグラウンドタスクであるならば、CPU優先度(占有度)により、その実行タイミングが左右されるのは容易に想像できるのですが、バックグラウンドスレッドは、どのようにCPU優先度が決まるのでしょうか。(デスクトップWindowsでは、あまり機会がないかとは思いますが、リアルタイムな処理,クリティカルな処理を同クラスによって実装していいのか判断できませんでした。) Formクラスから生成されるということは、Formウィンドウのメッセージスレッドをフォアグラウンドスレッドとし、そのバックグラウンドスレッドといった関係になるのでしょうか。(Formウィンドウのアイドル時間にバックグラウンドスレッドが実行されるという理解であっていますでしょうか。) また、スレッド内でのsleep()呼出しで、スレッドは別スレッドに制御が切り替わるハズだったと思いますが、バックグラウンドスレッド内でThread::Sleep()呼出しをした場合、必ず、フォアグラウンドスレッドに制御が移り、フォアグラウンドスレッドのアイドル時間が発生するまで、バックグラウンドスレッドへ制御が戻ることがないということでしょか。(各スレッドへいつ制御が移るのか分かりませんでした。) ご回答、または、参考サイト,参考文献等、教えてくださると非常に助かります。

  • Processで"<"の使用方法

    VC++2005の外部ファイルの実行で質問です。 バッチ(.bat)ファイルやコマンドプロンプトで実行する際に、 test.exe command < text.txt のように実行する実行ファイルを Processで実行するにはどうしたらいいのでしょうか? 現在、他の引数と同様に、 Process^ process1 = nullptr; ProcessStartInfo^ startInfo = gcnew ProcessStartInfo("test.exe"); startInfo->WindowStyle = ProcessWindowStyle::Normal; startInfo->Arguments = "command < text.txt"; process1 = Process::Start( startInfo ); process1->WaitForExit(); のような書き方をしてるのですが、正しく実行されません。 何か別の方法があるのでしょうか? C++はそんなに詳しくないですので、初心者に教えてように説明して頂けると助かります。 よろしくお願いします。

  • プロセスとスレッドの違いについて(Cプログラミングの観点から)

    プロセスとスレッドの違いがしっくりきません。 <プロセス> (1)プログラムの実行単位。Windows や Linux などの汎用 OS 上のアプリケーションは一般にプロセスとして動作している。プロセスは1つ以上のスレッドと、ファイル、ヒープメモリなどのリソースで構成される (2)起動や切り替えのオーバーヘッドが大きい <スレッド> (1)同一プロセス内の複数スレッドを同一メモリ空間上で実行でき、メモリ消費量などが軽減できる。 (2)マルチスレッド処理のプログラミングにおいては、同じデータを複数のスレッドが同時に書き換えることによる不整合に注意し、排他制御を行う必要がある。 等はwiki等調べて理解しています。 何が疑問なのかと申し上げますと、具体的にプログラミングする際に (1)マルチプロセスとマルチスレッド方式では、ソースにどのような違いが出てくるか (2)マルチプロセスとマルチスレッド方式では実行時間がどれだけ変化するか がわからないのです。お仕事で並列処理等について担当されている方などおられましたら、お手数ですがご教授ください。 なお、わかりやすい書籍、webサイト等ありましたらそれも併せて教えていただけると助かります。よろしくお願いします。ちなみに、環境はWindowsXP,VisualC++ExpressEdition2005を使っていますので、UNIXよりはWindowsかつCで動くプログラム例で教えていただけると大変助かります。しかし、当方Javaも多少であれば組めますのでJavaでも構いません。 何卒、よろしくお願い致します。

専門家に質問してみよう