1

Java でのセッション - タイムアウト - アイドル処理のマルチスレッドについて頭を悩ませようとしています。

サーバーとクライアントのアプリケーションが telnet 経由で通信しており、ユーザーが一定時間内に入力 (何か)、クリック (どこでも)、またはマウスの移動を行ったかを確認する必要があります。

そうでない場合は、セッションを続行するかどうかを尋ねるダイアログ ボックスがユーザーに表示されます。...(そうでない場合、ユーザーは次の 1 分ほどで自動的にログアウトされます。)

私のアプリケーションには複数のスレッドがあります。( - スレッドごとに 1 人のユーザー)。だから、これに最善の(そして最も簡単な)方法でアプローチする方法がわかりませんか?

私はそれが広範でとてつもない質問であることを知っていますが、あなたの何人かが私に正しい方向へのポインタまたはヒントを与えてくれることを望んでいました... :)

私は、チェックできる簡単な方法を望んでいました:(その場で少し擬似コード:)

if (idle = true){
timer.start();
if (timer > 120sec)
displayWaringJFrame("Continue Session?  - YES or NO ?)
displayTimer.start();
if (displayTimer > 30sec)
application.user.closeSession()

...またはそのようなもの!:)

4

2 に答える 2

2

最も簡単な解決策は、クラス java.lang.Thread です。

クラスを作成し、インターフェイスRunnableを実装できます

public class Session implements Runnable{
    public void run(){
        //your code
    }
}

メイン関数でクラス Thread を作成し、コンストラクター引数として、この importatnt の後に Session クラスのインスタンスを設定し、メソッド .start() を呼び出します。

public static void main(String args[]){
    new Thread(new Session()).start();
}

スレッドを操作するより便利な方法は、java.util.concurrent.ExecutorService と java.util.concurrent.Executors です。

于 2012-10-21T22:02:43.320 に答える
0

いくつかのアイデア: 1. 永続的なタイマーが必要な場合は、 Quartz
など のライブラリを使用して、一定期間後に作成したジョブ クラスを実行できます。スケジュールされたジョブをキャンセルしたり、再スケジュールしたりできます... 2.これが機能するために、必ずしもユーザーごとにスレッドが必要なわけではありません。通常、タイマー オブジェクトには、Quartz またはメモリのみの Java タイマーのいずれかを使用してワークロードを処理するための内部スレッドがあります。

于 2012-10-21T22:16:31.153 に答える