(57)【要約】【課題】  アプリケーションプログラムの処理の負荷を軽減し、そのアプリケーションプログラムの作成や設計を容易にするアプリケーション実行装置を提供する。【解決手段】  アプリケーション５０６のターゲットスレッド６１２の終了要求を受け付けるスレッド終了受付部６２３と、ターゲットスレッド６１２を実行するとともに、受け付けられた終了要求に基づいて、ターゲットスレッド６１２の実行を終了させるように処理するスレッド実行部６２２と、ハンドラアドレス７０４をアプリケーション５０６から取得して登録するスレッド終了通知ハンドラ登録部６２４と、スレッド実行部６２２による終了の処理が完了するときに、登録されたハンドラアドレス７０４に基づいてスレッド終了通知ハンドラ６１３を呼び出すことで、その完了をアプリケーション５０６に通知するスレッド終了通知部６２５とを備える。【選択図】        図６
2006155090.tif 000002
【特許請求の範囲】
【請求項１】
オブジェクト指向型のアプリケーションプログラムをダウンロードして実行するアプリケーション実行装置であって、
前記アプリケーションプログラムのスレッドを実行するスレッド実行手段と、
前記スレッドの実行を終了させるように求める終了要求を受け付ける終了要求受付手段と、
前記終了要求受付手段により受け付けられた終了要求に基づいて、前記スレッドの実行を終了させるように処理する終了処理手段と、
前記アプリケーションプログラムのオブジェクトたるハンドラを呼び出すための呼び出し情報を前記アプリケーションプログラムから取得して登録する登録手段と、
前記終了処理手段による終了の処理が完了するときに、前記登録手段により登録された呼び出し情報に基づいて前記ハンドラを呼び出すことで、前記完了を前記アプリケーションプログラムに通知する完了通知手段と
を備えることを特徴とするアプリケーション実行装置。
【請求項２】
前記登録手段は、前記ハンドラの所在を示すアドレスを前記呼び出し情報として取得する
ことを特徴とする請求項１記載のアプリケーション実行装置。
【請求項３】
前記登録手段は、前記スレッドに関連付けて前記アドレスを登録する
ことを特徴とする請求項１又は２記載のアプリケーション実行装置。
【請求項４】
前記登録手段は、前記終了要求受付手段により終了要求が受け付けられるときに、前記呼び出し情報を取得して登録する
ことを特徴とする請求項１〜３の何れか１項に記載のアプリケーション実行装置。
【請求項５】
オブジェクト指向型のアプリケーションプログラムのスレッドの実行を終了させるスレッド終了方法であって、
前記スレッドの実行を終了させるように求める終了要求を受け付ける終了要求受付ステップと、
前記終了要求受付ステップで受け付けられた終了要求に基づいて、前記スレッドの実行を終了させるように処理する終了処理ステップと、
前記アプリケーションプログラムのオブジェクトたるハンドラを呼び出すための呼び出し情報を前記アプリケーションプログラムから取得して登録する登録ステップと、
前記終了処理ステップで終了の処理が完了するときに、前記登録ステップで登録された呼び出し情報に基づいて前記ハンドラを呼び出すことで、前記完了を前記アプリケーションプログラムに通知する完了通知ステップと
を含むことを特徴とするスレッド終了方法。
【請求項６】
オブジェクト指向型のアプリケーションプログラムのスレッドの実行を終了させるためのプログラムを格納する記憶媒体であって、
前記プログラムは、
前記スレッドの実行を終了させるように求める終了要求を受け付ける終了要求受付ステップと、
前記終了要求受付ステップで受け付けられた終了要求に基づいて、前記スレッドの実行を終了させるように処理する終了処理ステップと、
前記アプリケーションプログラムのオブジェクトたるハンドラを呼び出すための呼び出し情報を前記アプリケーションプログラムから取得して登録する登録ステップと、
前記終了処理ステップで終了の処理が完了するときに、前記登録ステップで登録された呼び出し情報に基づいて前記ハンドラを呼び出すことで、前記完了を前記アプリケーションプログラムに通知する完了通知ステップと
をコンピュータに実行させることを特徴とする記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションプログラムをダウンロードして実行するアプリケーション実行装置に関し、特にＪａｖａ（登録商標）をベースとしたシステムにおいてスレッドを実行するアプリケーション実行装置に関する。
【背景技術】
【０００２】
デジタルテレビ端末に代表されるアプリケーションプログラムをダウンロードして実行するアプリケーション実行装置の動作方法のうち、特にＪａｖａ（登録商標）が動作するシステムにおける実行中のスレッドを終了する方法の従来の技術（例えば、特許文献１参照）を述べる。
【０００３】
アプリケーションプログラムをダウンロードして実行するデジタルテレビ受信機上でＪａｖａ）が動作するシステムに関する技術は、欧州のデジタルテレビ標準規格であるＤＶＢ−ＭＨＰ規格（ＥＴＳＩ  ＴＳ  １０１  ８１２  ＤＶＢ−ＭＨＰ仕様Ｖ１．０．２）等に定められており、公知の技術である。ＤＶＢ−ＭＨＰ規格は、デジタルテレビ向けにＪａｖａ規格を拡張して枠組みやＡＰＩ（Application Program Interface）を規定している。詳細はＤＶＢ−ＭＨＰ規格を参照されたい。
【０００４】
ここで、スレッドとは、ＣＰＵの資源を抽象化したものであり、Ｊａｖａプログラムにおける基本実行単位である。つまり、Ｊａｖａプログラムはスレッドの内部で動作する。
【０００５】
また、スレッドは、Ｊａｖａプログラムの起動時にはシステムから与えられるが、Ｊａｖａプログラム自身が、スレッドを生成させて、複数のスレッドを同時実行させることも可能である。また、生成したスレッドを終了させることも可能である。なお、スレッドの終了とは、スレッドの動作を停止させ、スレッド自身が用いたメモリ領域などのリソースを解放する処理を行うことを意味する。スレッドの内容の詳細などは、書籍「  Ｌａｎｇｕａｇｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（ＩＳＢＮ  ０−２０１−６３４５１−１）」等の多くの書籍で解説されている。ここでは、その詳細を省略する。
【０００６】
以下、Ｊａｖａベースのシステムにおいて従来行われているスレッドを終了する方法について概説する。
【０００７】
図１４は、アプリケーション実行装置が有する、スレッドを終了するための機能を概念的に示すブロック図である。
【０００８】
アプリケーション実行装置は、ダウンロードされたアプリケーションプログラム（以下、アプリケーションという）１３１０と、Ｊａｖａシステム内部のスレッド管理部１３４０とを有する。
【０００９】
ダウンロードされたアプリケーション１３１０は、初期スレッド１３１１を実行するためのプログラムと、ターゲットスレッド１３１２を実行するためのプログラムと、終了待ちスレッド１３１３を実行するためのプログラムとを備え、ＣＰＵ等の資源を用いて各プログラムの内容が実行されることにより初期スレッド１３１１、ターゲットスレッド１３１２、終了待ちスレッド１３１３となる。
【００１０】
初期スレッド１３１１は、ダウンロードされたアプリケーション１３１０の起動時にシステムから与えられるスレッドである。起動時はこの初期スレッド５０６１に基づく動作が実行される。
【００１１】
ターゲットスレッド１３１２は、初期スレッド１３１１によりスレッド管理部１３４０を用いて生成されたスレッドである。
【００１２】
一方、スレッド管理部１３４０は、システム内部にあってスレッドを管理するモジュールであり、スレッド生成部１３４１、スレッド実行部１３４２、及びスレッド終了受付部１３４３を有する。なお、このようなスレッド管理部１３４０は、Ｊａｖａのクラスであるjava.lang.Threadクラスとして実現されている。
【００１３】
スレッド生成部１３４１は、スレッド（Threadクラスのインスタンス）を生成する。
スレッド実行部１３４２は、アプリケーション１３１０からのスレッドの実行要求を受けてそのスレッドの実行を開始する。このようなスレッド実行部１３４２は、Thread.startメソッドに相当する。
【００１４】
スレッド終了受付部１３４３は、アプリケーション１３１０からのスレッドの終了要求を受けて終了処理を開始する。このようなスレッド終了受付部１３４３は、Thread.stopメソッドに相当する。
【００１５】
以下、アプリケーション実行装置のスレッド管理部１３４０がターゲットスレッド１３１２を終了させる際の動作について説明する。
【００１６】
図１５は、スレッド管理部１３４０がターゲットスレッド１３１２を終了させる動作の概略を示すタイムチャートである。
【００１７】
予め、アプリケーション１３１０は以下のようにターゲットスレッド１３１２を実行しているものとする。
【００１８】
すなわち、アプリケーション１３１０は、初期スレッド１３１１において、スレッド生成部１３４１に指示して、ターゲットスレッド１３１２を取得する。また、スレッド実行部１３４２に対し、ターゲットスレッド１３１２の実行を指示する。これにより、スレッド実行部１３４２は時刻１４１０からターゲットスレッド１３１２の処理を開始する。
【００１９】
以下、ターゲットスレッド１３１２の終了処理を説明する。
初期スレッド１３１１は、時刻１４２０に終了待ちスレッド１３１３を生成する。
【００２０】
終了待ちスレッド１３１３は、時刻１４３０にスレッド終了受付部１３４３に対してターゲットスレッド１３１２の終了要求を行う。その結果、スレッド終了受付部１３４３はスレッド実行部１３４２に対してターゲットスレッド１３１２の終了処理を要求する。スレッド実行部１３４２は終了処理を開始する。なお、図１５中、ターゲットスレッド１３１２の破線の矢印は終了処理中を示す。
【００２１】
次に、終了待ちスレッド１３１３は、時刻１４４０にスレッド実行部１３４２に対してスレッドの終了待ち要求する。
【００２２】
スレッド実行部１３４２は、図１５中の点線で示すように、ターゲットスレッド１３１２の終了処理を行い、時刻１４５０に終了処理が完了すると、時刻１４６０に終了待ちスレッド１３１３に通知する。
【００２３】
これを受けて、終了待ちスレッド１３１３は、初期スレッド１３１１に、ターゲットスレッド１３１２の終了を通知する。
【特許文献１】特開平８−１２３７００号公報
【発明の開示】
【発明が解決しようとする課題】
【００２４】
しかしながら、上記従来のアプリケーション実行装置が行うスレッドの終了方法では、アプリケーションプログラムの処理負担が大きく、そのアプリケーションプログラムの作成や設計に対しても負担が大きくなるという問題がある。
【００２５】
即ち、従来の技術では、Ｊａｖａベースのシステム上のアプリケーションプログラムが対象となるスレッド（ターゲットスレッド）を終了させるためには、さらに別のスレッド（終了待ちスレッド）を生成して、システム内部で行われるスレッドの終了処理の完了を待機する必要があった。言い換えれば、アプリケーションプログラムは、スレッドを終了させるために別のスレッドをわざわざ生成し、生成したスレッドをプログラム実行部にて実行させるようにプログラムを組む必要があり、その生成処理だけ処理負担が大きくなるばかりか、そのような生成処理を行うようにアプリケーションプログラムを作成するには、プログラム作成者にとって手間がかかってしまうのである。
【００２６】
そこで、本発明は、かかる問題に鑑みてなされたものであって、アプリケーションプログラムの処理の負荷を軽減し、そのアプリケーションプログラムの作成や設計を容易にするアプリケーション実行装置を提供することを目的とする。
【課題を解決するための手段】
【００２７】
上記目的を達成するために、本発明に係るアプリケーション実行装置は、オブジェクト指向型のアプリケーションプログラムをダウンロードして実行するアプリケーション実行装置であって、前記アプリケーションプログラムのスレッドを実行するスレッド実行手段と、前記スレッドの実行を終了させるように求める終了要求を受け付ける終了要求受付手段と、前記終了要求受付手段により受け付けられた終了要求に基づいて、前記スレッドの実行を終了させるように処理する終了処理手段と、前記アプリケーションプログラムのオブジェクトたるハンドラを呼び出すための呼び出し情報を前記アプリケーションプログラムから取得して登録する登録手段と、前記終了処理手段による終了の処理が完了するときに、前記登録手段により登録された呼び出し情報に基づいて前記ハンドラを呼び出すことで、前記完了を前記アプリケーションプログラムに通知する完了通知手段とを備えることを特徴とする。例えば、前記登録手段は、前記ハンドラの所在を示すアドレスを前記呼び出し情報として取得する。また、前記登録手段は、前記スレッドに関連付けて前記アドレスを登録する。
【００２８】
これにより、アプリケーションプログラムにオブジェクトとしてのハンドラを設定しておけば、スレッドの終了処理の完了時には、そのハンドラが呼び出されることでその完了がアプリケーションプログラムに通知されるため、スレッドの終了処理の完了をアプリケーションプログラムに通知するために、実行中のスレッドに対応する別のスレッドをアプリケーションプログラムにわざわざ生成させる必要がなく、アプリケーションプログラムの処理の負担を軽減することができる。また、ハンドラはオブジェクトであるため、ハンドラをアプリケーションプログラムに１つだけ設定しておけば、どのようなスレッドが実行中であっても、アプリケーションプログラムはそのスレッドの終了処理の完了の通知を得ることができ、アプリケーションプログラムの作成や設計を容易にすることができる。
【００２９】
また、前記登録手段は、前記終了要求受付手段により終了要求が受け付けられるときに、前記呼び出し情報を取得して登録することを特徴としても良い。
【００３０】
これにより、終了処理の受け付けと、呼び出し情報の取得及び登録とがそれぞれ同時に行われるため、アプリケーションプログラムの処理負担をさらに軽減することができる。
【００３１】
なお、本発明は、このようなアプリケーション実行装置として実現することができるだけでなく、その方法やプログラム、そのプログラムを格納する記憶媒体としても実現することができる。
【発明の効果】
【００３２】
本発明のアプリケーション実行装置は、アプリケーションプログラムがスレッドを終了させるために別のスレッドを自ら生成することがないので、終了処理の負荷を軽減し、そのアプリケーションプログラムの作成や設計を容易にすることができるという作用効果を奏する。
【発明を実施するための最良の形態】
【００３３】
（実施の形態１）
本発明に係る第１の実施の形態におけるケーブルテレビシステムについて図面を参照しながら説明する。
【００３４】
図１は、本発明に係る第１の実施の形態におけるケーブルテレビシステムの構成を示す構成図である。
【００３５】
このケーブルテレビシステムは、ヘッドエンド１０１と、３個のアプリケーション実行装置たる端末装置Ａ１１１、端末装置Ｂ１１２、及び端末装置Ｃ１１３とを備えている。本実施の形態では、１つのヘッドエンド１０１に対して３つの端末装置が結合されているが、任意の数の端末装置をヘッドエンド１０１に結合しても、本発明は実施可能である。
【００３６】
ヘッドエンド１０１は、複数の端末装置に対して映像・音声・データ等の放送信号を送信するとともに、端末装置からのデータ送信を受信する。本発明は主として端末装置に関わるので、ヘッドエンドに関する詳細な説明は省略する。
【００３７】
端末装置Ａ１１１、端末装置Ｂ１１２、端末装置Ｃ１１３は、ヘッドエンド１０１からの放送信号を受信し再生する。また、ヘッドエンド１０１に対して、各端末装置固有のデータを送信する。３つの端末装置は本実施の形態では全て同じ構成を取る。
【００３８】
図２は、端末装置のハードウエア構成を表すブロック図である。なお、図２では、端末装置Ａ１１１、端末装置Ｂ１１２、及び端末装置Ｃ１１３のうちの何れか１つを端末装置２００として示す。
【００３９】
端末装置２００は、ＱＡＭ復調部２０１、ＱＰＳＫ復調部２０２、ＱＰＳＫ変調部２０３、ＴＳデコーダ２０５、オーディオデコーダ２０６、スピーカ２０７、ビデオデコーダ２０８、ビデオプレーン２０９、スチルプレーン２１０、ＯＳＤプレーン２１１、ディスプレイ２１２、２次記憶部２１３、１次記憶部２１４、ＲＯＭ２１５、入力部２１６、及びＣＰＵ２１７を備えている。また端末装置２００には、ＣａｂｌｅＣａｒｄ２０４が着脱できる。
【００４０】
図３は、端末装置２００の外観の一例を示す外観図である。
この端末装置２００は、薄型テレビとして構成されており、ＣａｂｌｅＣａｒｄ２０４を除く上記各構成要素と、それらの構成要素を収納する筐体３０１とを備える。
【００４１】
ディスプレイ３０２は、図２におけるディスプレイ２１２に相当する。複数のボタンで構成されるフロントパネル部３０３は、図２の入力部２１６に相当する。信号入力端子３０４には、ヘッドエンド１０１との信号の送受信を行うためのケーブル線が接続される。この信号入力端子３０４は、図２のＱＡＭ復調部２０１、ＱＰＳＫ復調部２０２、及びＱＰＳＫ変調部２０３と接続されている。
【００４２】
ＣａｂｌｅＣａｒｄ３０５は、図２のＣａｂｌｅＣａｒｄ２０４に相当する。ＣａｂｌｅＣａｒｄ２０４は、図３のＣａｂｌｅＣａｒｄ３０５のように、端末装置２００とは独立した形態を取り、端末装置２００に着脱可能となっている。ＣａｂｌｅＣａｒｄ２０４の詳細は後述する。挿入スロット３０６にはＣａｂｌｅＣａｒｄ３０５が挿入される。
【００４３】
図２を参照して、ＱＡＭ復調部２０１は、ＣＰＵ２１７から指定された周波数を含むチューニング情報で、ヘッドエンド１０１でＱＡＭ変調され送信されてきた信号を復調し、ＣａｂｌｅＣａｒｄ２０４に引き渡す。
【００４４】
ＱＰＳＫ復調部２０２は、ＣＰＵ２１７から指定された周波数を含むチューニング情報で、ヘッドエンド１０１でＱＰＳＫ変調され送信されてきた信号を復調し、ＣａｂｌｅＣａｒｄ２０４に引き渡す。
【００４５】
ＱＰＳＫ変調部２０３は、ＣＰＵ２１７から指定された周波数を含む変調情報で、ＣａｂｌｅＣａｒｄ２０４から渡された信号をＱＰＳＫ変調し、ヘッドエンド１０１に送信する。
【００４６】
ＣａｂｌｅＣａｒｄ２０４は、図３のように端末装置２００から着脱可能な形態をしている。端末本体２００とＣａｂｌｅＣａｒｄ２０４の接続インターフェースは、ＯｐｅｎＣａｂｌｅ（登録商標）  ＨＯＳＴ−ＰＯＤ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（ＯＣ−ＳＰ−ＨＯＳＴＰＯＤ−ＩＦ−Ｉ１２−０３０２１０）及び、この仕様書から参照されている仕様書で定義されている。ここでは、詳細は省略する。
【００４７】
ＴＳデコーダ２０５は、ＣａｂｌｅＣａｒｄ２０４から受け取った信号のフィルタリングを実施し、必要なデータをオーディオデコーダ２０６、ビデオデコーダ２０８、及びＣＰＵ２１７に引き渡す。ここで、ＣａｂｌｅＣａｒｄ２０４から来る信号はＭＰＥＧ２トランスポートストリームである。ＭＰＥＧ２トランスポートストリームの詳細はＭＰＥＧ規格書  ＩＳＯ／ＩＥＣ１３８１８−１に記載されており、本実施の形態では詳細は省略する。ＭＰＥＧ２トランスポートストリームは、複数の固定長パケットで構成され、各パケットには、パケットＩＤが振られている。このパケットＩＤに応じて必要なパケットだけを取り出す処理が、ＴＳデコーダ２０５が行うフィルタリングである。ＴＳデコーダ２０５はＣＰＵ２１７から指示された複数のフィルタリングを同時に実行することができる。
【００４８】
オーディオデコーダ２０６は、ＴＳデコーダ２０５から与えられたＭＰＥＧ２トランスポートストリームのパケットに埋め込まれたオーディオデータを連結し、デジタル−アナログ変換を行いスピーカ２０７に出力する。
【００４９】
スピーカ２０７は、オーディオデコーダ２０６から与えられた信号を音声出力する。
ビデオデコーダ２０８は、ＴＳデコーダ２０５から与えられたＭＰＥＧ２トランスポートストリームのパケットに埋め込まれたビデオデータを連結し、デジタル−アナログ変換を行うことでビデオイメージを生成し、ビデオプレーン２０９に記憶させる。ここで、ビデオデコーダ２０８は、複数のビデオを同時に再生し、ビデオプレーン２０９に記憶させることもできる。また、ＣＰＵ２１７から与えられたＭＰＥＧ−Ｉデータをデコードし、スチルプレーン２１０に記憶させる。
【００５０】
ビデオプレーン２０９は、ビデオデコーダ２０８がデコードしたビデオイメージを記憶するためのものであって、メモリーなどで構成される。ここで、ビデオプレーン２０９は、複数の記憶領域を持つ。ビデオデコーダ２０８が複数のビデオを同時に再生した場合、デコードされた複数のビデオは、それぞれに対応するビデオプレーン内の記憶領域にそれぞれ記憶される。
【００５１】
スチルプレーン２１０は、ビデオデコーダ２０８がデコードしたビＭＰＥＧ−Ｉイメージや、ＣＰＵ２１７が描画したイメージを記憶するためのものであって、メモリーなどで構成される。スチルプレーン２１０が記憶するイメージは、主に背景画像として使用される。ここで、スチルプレーン２１０は、複数の記憶領域を持つ。
【００５２】
ＯＳＤプレーン２１１は、ＣＰＵ２１７によって描画されグラフィックスコンテンツを記憶するためのものであって、メモリーなどで構成される。グラフィックスコンテンツとは、点や、線、四角形等の基本図形、文字、ＪＰＥＧ規格やＰＮＧ規格などで定められた画像データをデコードしたイメージデータなどである。ここで、ＯＳＤプレーン２１１は、複数の記憶領域を持つ。
【００５３】
ディスプレイ２１２は、ビデオプレーン２０９、スチルプレーン２１０、及びＯＳＤプレーン２１１が記憶しているイメージを合成して出力するものであって、イメージ合成回路とブラウン管や液晶等で構成される。
【００５４】
２次記憶部２１３は、具体的には、フラッシュメモリーやハードディスク等で構成され、ＣＰＵ２１７から指示されたデータやプログラムを保存したり削除したりする。また、保存されているデータやプログラムはＣＰＵ２１７に参照される。保存されているデータやプログラムは、端末装置２００の電源が切断された状態でも保存されつづける。
【００５５】
１次記憶部２１４は、具体的には、ＲＡＭ等で構成され、ＣＰＵ２１７から指示されたデータやプログラムを一次的に保存したり削除したりする。また、保存されているデータやプログラムはＣＰＵ２１７に参照される。保存されているデータやプログラムは、端末装置２００の電源が切断された際に、抹消される。
【００５６】
ＲＯＭ２１５は、書き換え不可能なメモリーデバイスであり、具体的にはＲＯＭやＣＤ−ＲＯＭ、ＤＶＤなどで構成される。ＲＯＭ２１５は、ＣＰＵ２１７が実行するプログラムが格納されている。
【００５７】
入力部２１６は、具体的には、フロントパネルやリモコンで構成され、ユーザーからの入力を受け付ける。
【００５８】
図４は、フロントパネルとして構成された入力部２１６の外観の一例を示す図である。この入力部２１６（フロントパネル４００）は、図３のフロントパネル部３０３に相当する。フロントパネル４００は、７つのボタン、すなわち上カーソルボタン４０１、下カーソルボタン４０２、左カーソルボタン４０３、右カーソルボタン４０４、ＯＫボタン４０５、取消ボタン４０６、及びＥＰＧボタン４０７を備えている。ユーザーがボタンを押下すると、押下されたボタンの識別子が、ＣＰＵ２１７に通知される。
【００５９】
ＣＰＵ２１７は、ＲＯＭ２１５が記憶するプログラムを実行する。ＣＰＵ２１７は、実行するプログラムの指示に従い、ＱＡＭ復調部２０１、ＱＰＳＫ復調部２０２、ＱＰＳＫ変調部２０３、ＣａｂｌｅＣａｒｄ２０４、ＴＳデコーダ２０５、ビデオでコーダ２０８、ディスプレイ２１２、２次記憶部２１３、１次記憶部２１４、及びＲＯＭ２１５を制御する。
【００６０】
図５は、ＲＯＭ２１５に記憶され、ＣＰＵ２１７によって実行されるプログラムと、ダウンロードされて１次記憶部２１４に記憶された、ＣＰＵ２１７によって実行されるアプリケーションプログラムとを示す概念図である。
【００６１】
プログラム５００は、ＲＯＭ２１５に記憶されており、複数のサブプログラムで構成される。具体的に、プログラム５００は、ＯＳ５０１、ＪａｖａＶＭ５０２、ＥＰＧ５０３、サービスマネージャ５０４、及びＪａｖａライブラリ５０５で構成される。
【００６２】
ＯＳ５０１は、端末装置２００の電源が投入されると、ＣＰＵ２１７が起動するためのサブプログラムである。ＯＳという表記は、オペレーティングシステムの略であり、ＯＳ５０１の一例としてＬｉｎｕ１３等が挙げられる。ＯＳ５０１は、他のサブプログラムを平行して実行するカーネル５０１ａ及びライブラリ５０１ｂで構成される公知の技術であり、詳細な説明は省略する。本実施の形態においては、ＯＳ５０１のカーネル５０１ａは、ＪａｖａＶＭ５０２をサブプログラムとして実行する。また、ライブラリ５０１ｂは、これらサブプログラムに対して、端末装置２００が保持する構成要素を制御するための複数の機能を提供する。
【００６３】
ライブラリ５０１ｂの機能の一例として、チューニング機能を紹介する。チューニング機能は、他のサブプログラムから周波数を含むチューニング情報を受け取り、それをＱＡＭ復調部２０１に引き渡す。ＱＡＭ復調部２０１は与えられたチューニング情報に基づき復調処理を行い、復調したデータをＣａｂｌｅＣａｒｄ２０４に引き渡すことができる。この結果、他のサブプログラムはライブラリ５０１ｂを通してＱＡＭ復調部２０１を制御することができる。
【００６４】
ＪａｖａＶＭ５０２は、Ｊａｖａ（登録商標）言語で記述されたプログラムを解析して実行するバーチャルマシンである。この言語で記述されたプログラムはバイトコードと呼ばれる、ハードウエアに依存しない中間コードにコンパイルされる。バーチャルマシン（ＪａｖａＶＭ５０２）は、このバイトコードを実行するインタープリタである。また、一部のバーチャルマシンは、バイトコードをＣＰＵ２１７が理解可能な実行形式に翻訳してから、ＣＰＵ２１７に引渡し、実行することも行う。ＪａｖａＶＭ５０２は、カーネル５０１ａから、実行するプログラムを指定されることにより起動する。本実施の形態では、カーネル５０１ａは、実行するプログラムとしてナビゲータ５０３を指定する。言語の詳細は、書籍「  Ｌａｎｇｕａｇｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（ＩＳＢＮ  ０−２０１−６３４５１−１）」等の多くの書籍で解説されている。ここでは、その詳細を省略する。また、ＶＭ自体の詳細な動作などは、「  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（ＩＳＢＮ  ０−２０１−６３４５１３３）」等の多くの書籍で解説されている。ここでは、その詳細を省略する。
【００６５】
ナビゲータ５０３は、Ｊａｖａ言語で書かれたＪａｖａプログラムであり、ＪａｖａＶＭ５０２によって起動され、逐次実行される。ユーザーに対して、チャンネル一覧を表示したり、入力部２１６でユーザーが入力したチャンネル選択の指示を、ＣＰＵ２１７を通して受け取り、チャンネル選択を行う。
【００６６】
サービスマネージャ５０４は、Ｊａｖａ言語で書かれたＪａｖａプログラムであり、ナビゲータ５０３からチャンネル選択の指示を受け付け、ＪａｖａＶＭ５０２によって逐次実行される。サービスマネージャ５０４は、ユーザーによって指定されたチャンネルの番組を選択する。具体的には、指定された番組の制御を行うアプリケーションプログラム（以下、アプリケーションという）５０６をダウンロードして起動するまでの処理を行う。アプリケーション５０６がダウンロードされたあとの処理は、そのアプリケーション５０６が中心に行う。ここでダウンロードとは、ＭＰＥＧ２トランスポートストリーム中のパケットからファイルシステム等のデータを取り出し１次記憶部２１４等の記憶手段に保存することである。
【００６７】
以下、サービスマネージャ５０４がアプリケーション５０６をダウンロードして起動するまでの手順について簡単に説明する。ここではその詳細は本発明には関係ないのでその詳細の説明は省略する。
【００６８】
サービスマネージャ５０４は、最初にＪａｖａライブラリ５０５の中にあるＴｕｎｅｒ５０５ｃに、チューニングを依頼する。Ｔｕｎｅｒ５０５ｃは、２次記憶部２１３が記憶するチャンネル情報を参照し、ユーザーが選択したチャンネルに対応するチューニング情報を獲得する。次に、Ｊａｖａライブラリ５０５の中にあるＣＡ５０５dにデスクランブルを依頼する。ＣＡ５０５dは、ＯＳ５０１のライブラリ５０１ｂを通して復号に必要な情報をＣａｂｌｅＣａｒｄ２０４に与える。ＣａｂｌｅＣａｒｄ２０４は、与えられた情報を元に、ＱＡＭ復調部２０１から与えられた信号を復号してＴＳデコーダ２０５に引き渡す。次に、ＴＳデコーダ２０５は、Ｊａｖａライブラリ５０５の中にあるＡＭ５０５ｂに、指定されたチャンネルが提供するアプリケーション５０６の実行を依頼する。ＡＭ５０５ｂは、チャンネルに含まれているＡＩＴ（Ａｐｐｌｉｃａｔｉｏｎ  ｉｎｆｏｒｍａｔｉｏｎ  Ｔａｂｌｅ）を取り出し、チャンネルに含まれるアプリケーション５０６に関する情報を取り出す。ＡＩＴは、ＤＶＢ−ＭＨＰ規格書に規定されている。ＡＭ５０５ｂは、取り出したアプリケーション５０６に関する情報に従って、Ｊａｖａライブラリ５０５の中にあるＤＳＭＣＣ５０５aに、指定されたチャンネルが保持するディレクトリやファイルで構成されるファイルシステムのダウンロードを依頼する。ＭＰＥＧ２トランスポートストリームにファイルシステム等のデータを埋め込んだりそれを取り出したりする方法は、ＭＰＥＧ規格書  ＩＳＯ／ＩＥＣ１３８１８−６に記述されたＤＳＭＣＣという方式を用いる。ＡＭ５０５ｂは、１次記憶部２１４にダウンロードしたファイルシステム中から実行すべきアプリケーション５０６を実行する。
【００６９】
Ｊａｖａライブラリ５０５は、ＲＯＭ２１５に格納されている複数のＪａｖａライブラリの集合である。Ｊａｖａライブラリは、端末装置２００の機能をアプリケーション５０６が使用できるように、ＪａｖａのＡＰＩをアプリケーション５０６に対して提供している。本実施の形態では、Ｊａｖａライブラリ５０５は、スレッド管理部５０５a、ＡＭ５０５ｂ、Ｔｕｎｅｒ５０５ｃ，ＣＡ５０５ｄ、ＪＭＦ５０５e，及びＡＷＴ５０５ｆ等を含んでいる。
【００７０】
スレッド管理部５０５aは、スレッドを管理する。ここでスレッドとは、Ｊａｖａにおける基本実行単位であり、プログラムの実行に不可欠なものである。スレッドの内容の詳細は、書籍「  Ｌａｎｇｕａｇｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（ＩＳＢＮ  ０−２０１−６３４５１−１）」等の多くの書籍で解説されている。ここでは、その詳細を省略する。
【００７１】
ＡＭ５０５ｂは，ライブラリ５０１ｂを通してＴＳデコーダ２０５を制御し、ＭＰＥＧ２トランスポートストリームの中に多重化されているＡＩＴ（Ａｐｐｌｉｃａｔｉｏｎ  ｉｎｆｏｒｍａｔｉｏｎ  Ｔａｂｌｅ）を取り出し、チャンネルに含まれるアプリケーション５０６に関する情報を取り出す。ＡＩＴは、ＤＶＢ−ＭＨＰ規格書に規定されている。ＡＭ５０５ｂは、取り出したアプリケーション５０６に関する情報に従って、Ｊａｖａライブラリ５０５の中にあるＤＳＭＣＣに、指定されたチャンネルが保持するディレクトリやファイルで構成されるファイルシステムのダウンロードを依頼する。ＡＭ５０５ｂは、１次記憶部２１４にダウンロードされたファイルシステム中からＡＩＴで指定された実行すべきアプリケーション５０６を起動する。
【００７２】
Ｔｕｎｅｒ５０５ｃは、ライブラリ５０１ｂを通してＱＡＭ復調部２０１を制御し、指定された周波数にチューニングするための機能を提供する。
【００７３】
ＣＡ５０５ｄは、ＯＳ５０１のライブラリ５０１ｂを通して復号に必要な情報をＣａｂｌｅＣａｒｄ２０４に与えることによって、ＣａｂｌｅＣａｒｄ２０４がスクランブルされたＭＰＥＧ２トランスポートストリームをデスクランブルできるようにする機能を提供する。
【００７４】
ＪＭＦ５０５eは，ライブラリ５０１ｂを通してＴＳデコーダ２０５、オーディオデコーダ２０６、及びビデオデコーダ２０８を制御し、オーディオの再生及びビデオの再生を行う。
【００７５】
ＡＷＴ５０５ｆは、アプリケーション５０６が描画を行い、入力部２１６からのキー入力通知を受け取るためのＪａｖａ  ＡＰＩを提供する。
【００７６】
ダウンロードされたアプリケーション５０６は、Ｊａｖａ言語で書かれたＪａｖａプログラムであり、ＪａｖａＶＭ５０２によって逐次実行される。
【００７７】
以下、このように構成されたシステムにおいて、本発明の主要な機能である、スレッドの終了方法の一実施の形態を、詳細に説明する。
【００７８】
図６は、本実施の形態におけるアプリケーション実行装置のスレッド管理部及びアプリケーションの各機能構成を示す構成図である。
【００７９】
ダウンロードされたアプリケーション５０６は、初期スレッド６１１を実行するためのプログラムと、ターゲットスレッド６１２を実行するためのプログラムと、スレッド終了通知ハンドラ６１３を実行するためのプログラムとを備え、ＣＰＵ等の端末装置（またはアプリケーション実行装置）内の資源を用いて各プログラムの内容が解釈され、それぞれ初期スレッド６１１、ターゲットスレッド６１２、スレッド終了通知ハンドラ６１３が生成される。
【００８０】
初期スレッド６１１は、ダウンロードされたアプリケーション５０６に対して、起動時にシステム（プログラム５００）からの起動要求によりアプリケーション５０６の初期スレッド６１１を実行するためのプログラムの内容をスレッド生成部６２１が解釈し生成したスレッドである。従って起動時はこの初期スレッド６１１に基づく動作が行われる。
【００８１】
ターゲットスレッド６１２は、初期スレッド６１１からの要求によりスレッド生成部６２１を用いてアプリケーション５０６のターゲットスレッド６１２を実行するためのプログラムの内容が解釈され生成されたスレッドである。例えば、ターゲットスレッド６１２は、ファイルの読み出しや、アプリケーション実行装置の各種設定定数の変更又は設定などの処理を行う。
【００８２】
スレッド終了通知ハンドラ６１３は、スレッドの終了処理が完了した際に、システム（スレッド管理部５０５ａ）から通知を受けるためのメソッドが定義されたハンドラである。Ｊａｖａではリスナーという名称のインターフェースとして定義されているものである。
【００８３】
一方、スレッド管理部５０５ａは、システム内部にあってスレッドを管理するモジュールであり、スレッド生成部６２１、スレッド実行部６２２、スレッド終了受付部６２３、スレッド終了通知ハンドラ登録部６２４、スレッド終了通知部６２５、及びスレッド終了通知ハンドラテーブル６２６で構成される。
【００８４】
スレッド生成部６２１は、ダウンロードされたアプリケーション５０６のプログラムを解釈し、スレッド（Threadクラスのインスタンス）を生成する。
【００８５】
スレッド実行部６２２は、スレッドの実行要求を受けてスレッド生成部６２１にて生成したスレッドの実行を開始する。Thread.startメソッドに相当する。
【００８６】
スレッド終了受付部６２３は、アプリケーション５０６からのスレッドの終了要求を受けて終了処理を開始する。Thread.stopメソッドに相当する。
【００８７】
スレッド終了通知ハンドラ登録部６２４は、終了の対象となるスレッド（ターゲットスレッド）とスレッド終了通知ハンドラの登録要求とを受けるものである。スレッド終了通知ハンドラ登録部６２４は、ターゲットスレッドとスレッド終了通知ハンドラの登録要求を受け、スレッド終了通知ハンドラテーブル６２６に後述するスレッド特定情報とハンドラアドレスを登録する。
【００８８】
スレッド終了通知部６２５は、スレッド終了通知ハンドラテーブル６２６から、終了したスレッドに対応して登録されたスレッド終了通知ハンドラを取得し、そのスレッド終了通知ハンドラに定義されたメソッドを呼び出す。
【００８９】
スレッド終了通知ハンドラテーブル６２６は、スレッド終了通知ハンドラと終了の対象となるスレッドの組を格納するためのテーブルである。
【００９０】
図７（ａ）は、スレッド終了通知ハンドラテーブル６２６に格納されるデータの一例を説明するための説明図である。
【００９１】
例えば、スレッド終了通知ハンドラテーブル６２６は、終了の対象となるターゲットスレッドを特定するためのスレッド特定情報７０１（例えばターゲットスレッドを実行するとき、ターゲットスレッドに一意に割り当てられる文字列、ＩＤなど）と、そのターゲットスレッドの終了を通知するためのスレッド終了通知ハンドラの所在を示すハンドラアドレス７０２（呼び出し情報）とを関連付けて、これらを１つの組７１１として格納している。
【００９２】
図７（ｂ）は、スレッド終了通知ハンドラテーブル６２６に格納されるデータの他の例を説明するための説明図である。
【００９３】
スレッド終了通知ハンドラテーブル６２６は、図７（ａ）に示す状態から、さらに他のスレッド特定情報７０３とハンドラアドレス７０４とが登録されると、これらを組７１１とは異なる別の組７１２として格納する。
【００９４】
図８は、スレッド管理部５０５ａがターゲットスレッド６１２を終了させる動作の概略を示すタイムチャートである。
【００９５】
ここで、初期状態として、スレッド終了通知ハンドラテーブル６２６には、図７（ａ）に示すように、スレッド特定情報７０１とハンドラアドレス７０２とが格納されているものとする。
【００９６】
アプリケーション５０６はターゲットスレッド６１２を予め実行している。すなわち、アプリケーション５０６の初期スレッド６１１は、スレッド生成部６２１にターゲットスレッド６１２を生成させて、そのターゲットスレッド６１２を取得する。さらに、初期スレッド６１１は、時刻８１０からスレッド実行部６２２に対してターゲットスレッド６１２を実行させる。
【００９７】
以下、このように実行されているターゲットスレッド６１２をアプリケーション５０６が終了させる際の動作を説明する。
【００９８】
初期スレッド６１１は、ダウンロードされたアプリケーション５０６のスレッド終了通知ハンドラ６１３を実行するためのプログラムをＪａｖａＶＭ５０２により解釈させて、スレッド終了通知ハンドラ６１３を生成する。ＪａｖａＶＭ５０２により生成されたスレッド終了通知ハンドラ６１３はオブジェクトデータ（以下オブジェクトと称す）である。初期スレッド６１１は、時刻８２０にスレッド終了通知ハンドラ登録部６２４に対して、ターゲットスレッド６１２を特定するためのスレッド特定情報７０３と、生成されたスレッド終了通知ハンドラ６１３の所在を示すハンドラアドレス７０４とを通知する。これを受けて、スレッド終了通知ハンドラ登録部６２４は、通知されたスレッド特定情報７０３とハンドラアドレス７０４とを組７１２として、図７（ｂ）に示すようにスレッド終了通知ハンドラテーブル６２６に格納する。
【００９９】
さらに、アプリケーション５０６の初期スレッド６１１は、時刻８３０にスレッド終了受付部６２３に対して、ターゲットスレッド６１２の終了を要求する。これを受けて、スレッド終了受付部６２３は、スレッド実行部６２２に対して、ターゲットスレッド６１２の終了を要求する。スレッド実行部６２２は、ターゲットスレッド６１２の終了処理を行う。なお、図８中、ターゲットスレッド６１２の破線の矢印は終了処理中を示す。スレッド実行部６２２は、ターゲットスレッド６１２の終了処理が完了する直前、つまり時刻８４０に、その完了をスレッド終了通知部６２５に通知する。
【０１００】
スレッド終了通知部６２５は、スレッド終了通知ハンドラテーブル６２６を参照し、ターゲットスレッド６１２に対応するハンドラアドレス７０４を取り出す。つまり、図７（ｂ）に示すスレッド終了通知ハンドラテーブル６２６において、ターゲットスレッド６１２を特定するためのスレッド特定情報７０３がハンドラアドレス７０４に関連付けられているので、スレッド終了通知部６２５はそのハンドラアドレス７０４を取得する。そしてスレッド終了通知部６２５は、時刻８５０にそのハンドラアドレス７０４からスレッド終了通知ハンドラ６１３の内部に定義されたメソッドを呼び出す。このように呼び出されたメソッドを実行させて、例えばスレッド終了通知ハンドラ６１３にターゲットスレッド６１２の終了時刻が書き込まれることにより、そのターゲットスレッド６１２の終了が通知される。
【０１０１】
その後、スレッド終了通知部６２５は、スレッド特定情報７０３とハンドラアドレス７０４とをスレッド終了通知ハンドラテーブル６２６から削除して、そのスレッド終了通知ハンドラテーブル６２６を図７（ａ）の状態に戻す。
【０１０２】
以上により、アプリケーション５０６は、スレッド終了通知ハンドラ６１３に定義されたメソッドがスレッド終了通知部６２５により呼び出された結果、ターゲットスレッド６１２の終了が通知されるので、従来例のようにアプリケーション５０６が自らターゲットスレッドとは別のスレッドを生成することなく、ターゲットスレッド６１２の終了処理の完了を知ることができる。したがって、アプリケーション５０６のターゲットスレッドの終了処理に起因するアプリケーション５０６側の処理負担を軽減することができる。これはアプリケーションに組み入れるべき終了動作に係るプログラムが軽減されるため、アプリケーションプログラムの作成者にとってはより容易にプログラムの作成／設計ができることを意味する。
【０１０３】
また、スレッド終了通知ハンドラ６１３はオブジェクトであるため、スレッド終了通知ハンドラ６１３をアプリケーション５０６に１つだけ設定しておけば、どのようなスレッドが実行中であっても、アプリケーション５０６はそのスレッドの終了処理の完了の通知を得ることができ、アプリケーション５０６の作成や設計を容易にすることができる。
【０１０４】
なお、ＡＭ５０５ｂなど他のＪａｖａライブラリ内部においても、スレッドの生成や終了処理を行うことがあるが、本実施の形態で述べたダウンロードアプリケーションにおける処理内容がそのまま適用できる。
【０１０５】
図９は、初期スレッド６１１の処理動作を示すフローチャートである。
まず、初期スレッド６１１は、スレッド生成部６２１を用いてターゲットスレッド６１２を生成する（ステップＳ９０１）。初期スレッド６１１は、スレッド実行部６２２を用いてターゲットスレッド６１２を実行する（ステップＳ９０２）。初期スレッド６１１は、スレッド終了処理ハンドラ登録部６２４に対してスレッド終了通知ハンドラ６１３、つまりスレッド特定情報及びハンドラアドレスの登録を要求する（ステップＳ９０３）。初期スレッド６１１は、スレッド終了受付部６２３に対してターゲットスレッドの終了を要求する（ステップＳ９０４）。
【０１０６】
図１０は、スレッド終了通知部６２５の処理動作を示すフローチャートである。
まず、スレッド終了通知部６２５は、スレッド実行部６２２から、ターゲットスレッド６１２の終了処理完了の通知を受ける（ステップＳ９０５）。次に、スレッド終了通知部６２５は、スレッド終了通知ハンドラテーブル６２６を参照して、そのターゲットスレッド６１２に対応するハンドラアドレスを取得する（ステップＳ９０６）。そして、スレッド終了通知部６２５は、そのハンドラアドレスに対応するスレッド終了通知ハンドラのメソッドを呼び出す（ステップＳ９０７）。
【０１０７】
（実施の形態２）
本実施の形態におけるケーブルテレビシステムの各端末装置（アプリケーション実行装置）は、実施の形態１の端末装置とは異なる方法によりスレッドを終了させる。
【０１０８】
なお、本実施の形態におけるケーブルシステムは、実施の形態１の図１に示すケーブルテレビシステムと同一のシステム構成を有する。また、本実施の形態におけるケーブルシステムの端末装置は、実施の形態１の図２〜図５に示す端末装置の構成と同一の構成を有する。
【０１０９】
図１１は、本発明に係る第２の実施の形態におけるアプリケーション実行装置のスレッド管理部及びアプリケーションの各機能構成を示す構成図である。
【０１１０】
本実施の形態におけるスレッド管理部５０５ｓは、実施の形態１のスレッド管理部５０５ａが備える構成要素の他に、登録終了受付部１００１を備えている。
【０１１１】
なお、本実施の形態において、実施の形態１の各構成要素に付された符号と同一の符号を付して示す構成要素は、実施の形態１の構成要素と同一の機能及び構成を有するため、これらの詳細な説明は省略する。
【０１１２】
登録終了受付部１００１は、スレッド特定情報及びハンドラアドレスの登録要求とターゲットスレッドの終了要求とを同時に受け付ける。そして登録終了受付部１００１は、スレッド終了通知ハンドラ登録部６２４を呼び出して上記登録を実行させるとともに、スレッド終了受付部６２３を呼び出して上記終了要求を受け付けさせる。
【０１１３】
図１２は、ターゲットスレッド６１２を終了させる動作の概略を示すタイムチャートである。
【０１１４】
ここで、初期状態として、スレッド終了通知ハンドラテーブル６２６には、図７（ａ）に示すように、スレッド特定情報７０１とハンドラアドレス７０２とが格納されているものとする。
【０１１５】
初期スレッド６１１はターゲットスレッド６１２を予め実行している。すなわち、アプリケーション５０６の初期スレッド６１１は、スレッド生成部６２１にターゲットスレッド６１２を生成させて、そのターゲットスレッド６１２を取得する。さらに、初期スレッド６１１は、時刻１１１０からスレッド実行部６２２に対してターゲットスレッド６１２を実行させる。
【０１１６】
以下、このように実行されているターゲットスレッド６１２をアプリケーション５０６が終了させる際の動作を説明する。
【０１１７】
初期スレッド６１１は、スレッド終了通知ハンドラ６１３を生成する。生成されたスレッド終了通知ハンドラ６１３は、時刻１１２０に登録終了受付部１００１に対して、ターゲットスレッド６１２を特定するためのスレッド特定情報と、スレッド終了通知ハンドラ６１３の所在を示すハンドラアドレスとを通知する。即ち、スレッド終了通知ハンドラ６１３は、スレッド特定情報及びハンドラアドレスの登録を要求する。これと同時に、アプリケーション５０６の初期スレッド６１１は、登録終了受付部１００１に対して、ターゲットスレッド６１２の終了を要求する。
【０１１８】
これらの要求を受けた登録終了受付部１００１は、時刻１１３０にスレッド終了通知ハンドラ登録部６２４を呼び出して、上記登録の要求をそのスレッド終了通知ハンドラ登録部６２４に依頼する。さらに、登録終了受付部１００１は、時刻１１４０にスレッド終了受付部６２３を呼び出して、上記終了の要求をそのスレッド終了受付部６２３に依頼する。
【０１１９】
スレッド終了通知ハンドラ登録部６２４は、登録終了受付部１００１から依頼されて与えられたスレッド特定情報及びハンドラアドレスの組を、スレッド終了通知ハンドラテーブル６２６に格納する。
【０１２０】
また、スレッド終了受付部６２３は、登録終了受付部１００１からの依頼に基づき、スレッド実行部６２２に対して、ターゲットスレッド６１２の終了を要求する。スレッド実行部６２２は、ターゲットスレッド６１２の終了処理を行う。なお、図１２中、ターゲットスレッド６１２の破線の矢印は終了処理中を示す。スレッド実行部６２２は、ターゲットスレッド６１２の終了処理が完了する直前、つまり時刻１１５０に、その完了をスレッド終了通知部６２５に通知する。
【０１２１】
スレッド終了通知部６２５は、スレッド終了通知ハンドラテーブル６２６を参照し、ターゲットスレッド６１２に対応するハンドラアドレス７０４を取り出す。つまり、図７（ｂ）に示すスレッド終了通知ハンドラテーブル６２６において、ターゲットスレッド６１２を特定するためのスレッド特定情報７０３がハンドラアドレス７０４に関連付けられているので、スレッド終了通知部６２５はそのハンドラアドレス７０４を取得する。そしてスレッド終了通知部６２５は、時刻１１６０にそのハンドラアドレス７０４からスレッド終了通知ハンドラ６１３の内部に定義されたメソッドを呼び出す。このように呼び出されたメソッドを実行させて、例えばスレッド終了通知ハンドラ６１３にターゲットスレッド６１２の終了時刻が書き込まれることにより、そのターゲットスレッド６１２の終了が通知される。
【０１２２】
その後、スレッド終了通知部６２５は、スレッド特定情報７０３とハンドラアドレス７０４とをスレッド終了通知ハンドラテーブル６２６から削除して、そのスレッド終了通知ハンドラテーブル６２６を図７（ａ）の状態に戻す。
【０１２３】
以上により、アプリケーション５０６は、スレッド終了通知ハンドラ６１３にて定義されたメソッドが呼び出されるので、従来例のように自ら別のスレッドを生成することなく、ターゲットスレッド６１２の終了処理の完了を知ることができる。
【０１２４】
なお、ＡＭ５０５ｂなど他のＪａｖａライブラリにおいても、スレッドの生成や終了処理を行うことがあるが、本実施の形態で述べたダウンロードアプリケーションにおける処理内容がそのまま適用できる。
【０１２５】
図１３は、初期スレッド６１１の処理動作を示すフローチャートである。
まず、初期スレッド６１１は、スレッド生成部６２１を用いてターゲットスレッド６１２を生成する（ステップＳ１２０１）。初期スレッド６１１は、スレッド実行部６２２を用いてターゲットスレッド６１２を実行する（ステップＳ１２０２）。初期スレッド６１１は、登録終了受付部１００１に対して、スレッド特定情報及びハンドラアドレスの登録と、ターゲットスレッドの終了とを同時に要求する（ステップＳ１２０３）。
【０１２６】
また、本実施の形態におけるスレッド終了通知部６２５は、実施の形態１と同様、即ち図１０に示す動作と同様の動作を実行する。
【０１２７】
このような本実施の形態では、実施の形態１と同様の効果が得られるとともに、初期スレッド６１１からスレッド管理部５０５ｓへの呼び出し回数を３回から２回に減少することができ、処理動作の効率を向上することができるというメリットがある。言い換えれば、本実施の形態のアプリケーション実行装置は、実施の形態１と比べて、アプリケーション５０６の処理負担をさらに軽減することができる。
【０１２８】
なお、本実施の形態では、登録終了受付部１００１を備えたが、全く同様にして、スレッド特定情報及びハンドラアドレスの登録の要求とターゲットスレッドの生成の要求を受け付ける登録生成部、あるいは、スレッド特定情報及びハンドラアドレスの登録の要求とターゲットスレッドの実行の要求を受け付ける登録実行部を備えても良い。
【産業上の利用可能性】
【０１２９】
本発明のアプリケーション実行装置は、アプリケーションプログラムの処理の負荷を軽減し、そのアプリケーションプログラムの作成や設計を容易にすることができるという効果を奏し、例えばアプリケーションプログラムをダウンロードして実行及び終了させるパーソナルコンピュータや携帯電話などの情報機器として適応することができる。
【図面の簡単な説明】
【０１３０】
【図１】本発明に係る第１の実施の形態におけるケーブルテレビシステムの構成を示す構成図である。
【図２】同上の端末装置のハードウエア構成を表すブロック図である。
【図３】同上の端末装置の外観の一例を示す外観図である。
【図４】同上のフロントパネルとして構成された入力部の外観の一例を示す図である。
【図５】同上のプログラムとアプリケーションプログラムとを示す概念図である。
【図６】同上のアプリケーション実行装置のスレッド管理部とアプリケーションプログラムの各機能構成を示す構成図である。
【図７】（ａ），（ｂ）は、同上のスレッド終了通知ハンドラテーブルに格納されるデータの一例を説明するための説明図である。
【図８】同上のスレッド管理部がターゲットスレッドを終了させる動作の概略を示すタイムチャートである。
【図９】同上の初期スレッドの処理動作を示すフローチャートである。
【図１０】同上のスレッド終了通知部の処理動作を示すフローチャートである。
【図１１】本発明に係る第２の実施の形態におけるアプリケーション実行装置のスレッド管理部及びアプリケーションプログラムの各機能構成を示す構成図である。
【図１２】同上のターゲットスレッドを終了させる動作の概略を示すタイムチャートである。
【図１３】同上の初期スレッドの処理動作を示すフローチャートである。
【図１４】従来のアプリケーション実行装置が有する、スレッドを終了するための機能を概念的に示すブロック図である。
【図１５】同上のスレッド管理部がターゲットスレッドを終了させる動作の概略を示すタイムチャートである。
【符号の説明】
【０１３１】
１０１  ヘッドエンド
１１１  端末装置Ａ
１１２  端末装置Ｂ
１１３  端末装置Ｃ
５０５ａ，５０５ｓ  スレッド管理部
５０６  アプリケーション
６１１  初期スレッド
６１２  ターゲットスレッド
６１３  スレッド終了通知ハンドラ
６２１  スレッド生成部
６２２  スレッド実行部
６２３  スレッド終了受付部
６２４  スレッド終了通知ハンドラ登録部
６２５  スレッド終了通知部
６２６  スレッド終了通知ハンドラテーブル
【図１】
2006155090.tif 000003
【図２】
2006155090.tif 000004
【図３】
2006155090.tif 000005
【図４】
2006155090.tif 000006
【図５】
2006155090.tif 000007
【図６】
2006155090.tif 000008
【図７】
2006155090.tif 000009
【図８】
2006155090.tif 000010
【図９】
2006155090.tif 000011
【図１０】
2006155090.tif 000012
【図１１】
2006155090.tif 000013
【図１２】
2006155090.tif 000014
【図１３】
2006155090.tif 000015
【図１４】
2006155090.tif 000016
【図１５】
2006155090.tif 000017