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 を実装して、スレッドを使用するほかのクラスの場合と同じように 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 クラスの仕様は、次のとおりです。
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;
}