Hitachi

Cosminexus V11 アプリケーションサーバ リファレンス API編


付録B.1 スレッド生成処理一覧

ここでは,次のAPIや機能がJavaVM内部で生成するスレッドについて説明します。

〈この項の構成〉

(1) GUI関連のAPI

GUI関連のAPIで,次のスレッドを生成します。

特定の条件なし

AWTまたはSwingのGUI機能を使用すると,スレッドを生成することがあります。生成するスレッドはJavaプロセスで最大六つです。

java.awt.EventQueueクラス

EventQueueインスタンスごとに,一つのスレッドを生成することがあります。

java.awt.FileDialogクラス

show()メソッドを呼び出すと,スレッドを一つ生成します。この呼び出しによるスレッドはFileDialogインスタンスごとに最大一つです。

java.awt.image.renderable.RenderableImageProducerクラス

startProduction()メソッドを呼び出すとスレッドを一つ生成します。

java.awt.print.PrinterJobクラス

次のメソッドを呼び出すと,スレッドを一つ生成します。

  • print()(2種両方)

  • printDialog()(2種両方)

  • pageDialog()(2種両方)

java.awt.TrayIconクラス

UNIX環境でjava.awt.TrayIconインスタンスを生成すると,インスタンスごとに,一つのスレッドを生成します。

javax.swing.JEditorPaneクラス

JEditorPaneインスタンスごとに,一つのスレッドを生成することがあります。

javax.swing.JFileChooserクラス

javax.swing.JFileChooserインスタンスごとに,一つのスレッドを生成することがあります。

javax.swing.JTableクラス

print()(5種類すべて)を呼び出すと,スレッドを一つ生成します。

javax.swing.Timer

start()またはrestart()メソッドを呼び出すと,スレッドを一つ生成します。この呼び出しによるスレッドはTimerインスタンスごとに最大一つです。

javax.swing.text.LayoutQueueクラス

addTask()メソッドを呼び出すと,スレッドを一つ生成します。この呼び出しによるスレッドはLayoutQueueインスタンスごとに最大一つです。

javax.swing.text.JTextComponentクラス

print()(3種類すべて)を呼び出すと,スレッドを一つ生成することがあります。

javax.swing.text.AsyncBoxViewクラス

次のメソッドを呼び出すと,API内部でLayoutQueueインスタンスを作成し,その延長でスレッドを生成することがあります。

  • preferenceChanged()

  • replace()

  • setSize()

javax.swing.text.html.FormViewクラス

submitData()メソッドを呼び出すと,スレッドを一つ生成します。

Appletの使用

UNIX環境でAppletを使用して警告アイコンが表示されると,スレッドを一つ生成します。

インプットメソッドの使用

java.awt.imやjava.awt.im.spiで提供されるインプットメソッドを使用するとスレッドを生成することがあります。このスレッドはJavaプロセスで最大一つです。

(2) JMX関連のAPI

JMX関連のAPIで,次のスレッドを生成します。

SNMP(Simple Network Management Protocol)によるリソース監視

SNMPを使用してリソースを監視・管理している場合,最大で九つのスレッドを生成します。

javax.management.remote.rmi. RMIConnectionインターフェース

RMIConnectionインターフェースを実装したクラスのインスタンスごとに,一つのスレッドを生成することがあります。

javax.management.remote.rmi.RMIConnectorクラス

connect()(2種両方)メソッドを呼び出すと,確立した接続一つごとにスレッドを二つ生成します。

(3) JNDI関連のAPI

JNDI関連のAPIで,次のスレッドを生成します。

特定の条件なし

ネーミングやディレクトリの操作で,JNDIコンテキスト一つごとにスレッドを二つ生成します。

javax.naming.event.EventContextインターフェース

EventContextインターフェースを実装したクラスのaddNamingListene()(2種両方)メソッドを呼び出すと,一つのスレッドを生成することがあります。この呼び出しによるスレッドはディレクトリコンテキストごとに最大一つです。

(4) RMI関連のAPI

RMI関連のAPIで,次のスレッドを生成します。

RMIサーバ側

JavaVM内部で次のスレッドを生成します。

  • 特定の条件なしに最大六つのスレッドを生成します。このスレッドはJavaVMプロセスの終了まで維持されます。

  • RMIクライアントから接続待機向けに,リモートオブジェクトをエクスポートしたTCPポート数分のスレッドを生成します。

  • RMIクライアントからのメソッド呼び出しがあると,その制御のため一つのスレッドを生成します。

  • java.rmi.server.Unreferencedインターフェースを実装したリモートオブジェクトのunreferenced()メソッド呼び出し向けに,一つのスレッドを生成します。

RMIクライアント側

接続しているRMIサーバと同数のスレッドを生成します。

(5) そのほかのAPIや機能

そのほかのAPIや機能で,次のスレッドを生成します。

HTTP/HTTPS通信

HTTP/HTTPS通信をするとKeep Aliveの制御のためスレッドを二つ生成します。このスレッドはJavaプロセスで最大二つです。

DNS通信

Windows環境でDNS通信をすると,スレッドを一つ生成することがあります。このスレッドはJavaプロセスで最大一つです。

ファイナライザの明示実行

java.lang.Systemクラスやjava.lang.RuntimeクラスのrunFinalization()を呼び出すとスレッドを一つ生成します。

外部プロセスの作成

UNIX環境でjava.lang.ProcessBuilderクラスなどによって外部プロセスを作成すると,スレッドを一つ生成します。このスレッドはjava.lang.Processインスタンスごとに最大一つです。

java.nio.channels.Selectorクラス

Windows環境でSelectorクラスを使用すると,Selectorインスタンスへのチャネルの登録数が1,024増えるごとに,スレッドを一つ生成します。

java.util.prefs.Preferencesクラス

Preferencesクラスを使用すると,スレッドを一つ生成することがあります。このスレッドはJavaプロセスで最大一つです。

javax.print.PrintServiceLookupクラス

javax.print.PrintServiceLookupを使用すると,スレッドを一つ生成します。このスレッドはJavaプロセスで最大一つです。

sun.security.pkcs11.SunPKCS11クラス

sun.security.pkcs11.SunPKCS11インスタンスごとに,スレッドを一つ生成することがあります。