NotesThread (Java)

NotesThread クラスは java.lang.Thread から派生して、Notes/Domino 用の特別な初期化コードや終了コードを組み込みます。このような Thread の派生は、Notes/Domino クラスに対してローカルに呼び出しを行う Java™ プログラムを実行するために必要です。これは、リモート呼び出しには必要ありません。ローカル呼び出しとリモート呼び出しの両方を行うアプリケーションは、静的メソッド sinitThread と stermThread をいつ使用するかを動的に判断できます。リモート呼び出しは、ローカルスレッドの実行中に行うことができます。ただし、あるセッションで取得したオブジェクトを、他のセッションへの呼び出しに使用してはいけません。AppletBase や AgentBase から派生したスレッドやエージェントを起動しないアプレットは、リモート呼び出し用とローカル呼び出し用に分けてコーディングする必要はありません。そのための機能がベースコードで提供されているためです。

継承を通してスレッドを実行する

継承を通してスレッドを実行するには、Thread の代わりに NotesThread から派生させ、run の代わりに runNotes メソッドを含めます。

public class myClass extends NotesThread {
    public void runNotes() {
        // my code
    }
}

ほかのスレッドと同様に Domino スレッドを開始します。

myClass m = new myClass();
m.start();

Runnable インターフェースを通してスレッドを実行する

Runnable インターフェースを通してスレッドを実行するには、Runnable を実装して、スレッドを使用するほかのクラスの場合と同じように run メソッドを含めます。

public class myClass implements Runnable {
    public void run() {
        // my code
    }
}

「implements Runnable」と「extends NotesThread」のどちらを指定してもクラスが動作するように、run メソッドと runNotes メソッドの両方を含めることもできます。

public class myClass implements Runnable {
    public void run() {
        this.runNotes();
    }
    public void runNotes() {
        // my code
    }
}

静的メソッドを通してスレッドを実行する

静的メソッドを通してスレッドを実行するには、sinitThread() を呼び出してスレッドを初期化し、stermThread() でスレッドを終了します。sinitThread() への各呼び出しに対して、stermThread() を 1 回だけ呼び出します。stermThread は finally ブロックに置くことをお勧めします。

public class myClass
{
    public static void main(String argv[])
    {
        try
        {
            NotesThread.sinitThread();
            // my code
        }
        //my code
        finally
        {
            NotesThread.stermThread();
        }
    }
}

マルチスレッドの問題

マルチスレッドは、必要な場合を除いて使用を避けてください。必要な場合とは、ファイル入出力処理中に、Web の要求が処理されるような場合です。次のガイドラインを参考にしてください。

NotesThread の仕様

NotesThread クラスの仕様は、次のとおりです。

public class NotesThread extends java.lang.Thread {
    public NotesThread();
    public NotesThread(Runnable t);
    public NotesThread(String name);
    public NotesThread(Runnable t, String name);
    public NotesThread(ThreadGroup group, String name);
    public NotesThread(ThreadGroup group, Runnable t, String name);
    public NotesThread(ThreadGroup group, Runnable t);
    public void initThread();
    public void termThread();
    public static void sinitThread();
    public static void stermThread();
    public final void run();
    public void runNotes() throws NotesException;
    public void finalize();
    public static void load(boolean debug) throws NotesException;
}