タイル・ローダーでのスレッドの使用

タイルがビューに表示されているとき、タイルの読み込みは、IlvTiledLayer の場合、 IlvTileLoader によって、主に load メソッドを呼び出して実行されます。JViews Maps 8.1 以前では、これは Swing スレッドで実行されていましたが、コードが CPU 集約的になるため、GUI フリーズを招いていました。
IlvThreadedTileLoader クラスを使用すると、タイルの読み込みコードを異なるスレッドで実行できます。このクラスは、IlvTileLoader インターフェースを実装し、タイル読み込みコードを実行する代理 IlvTileLoader のためにラッパーとして振る舞います。
内部では、 IlvThreadedTileLoader オブジェクトは、(IlvThreadedTileLoader に対して IlvTileController からの) load および release 呼び出しが積み上げられ、専用スレッドによって可能な限り素早く処理されるキューを保持します。この方法で、すべてのタイル読み込みが非同期的に実行され、ビューに表示させるために何十メガバイトものデータが読み込まれる場合でも、アプリケーションは反応可能な状態になります。
このセクションで説明されているコードをすべて含む Map Builder のデモ用ソース・コードについては、 <installdir> /jviews-maps89/samples/mapbuilder/index.html をご覧ください。
以下のコード・サンプルは、他のタイル・ローダーをカプセル化する IlvThreadedTileLoader の使用法を表しています。
IlvTiledLayer tiledLayer;
// this is the tile loader that performs the real loading, such as 
IlvShapeFileTileLoader
IlvTileLoader tileLoader; 

// Create a threaded tile loader that encapsulates the previous one
IlvThreadedTileLoader threadedTileLoader = 
                         new IlvThreadedTileLoader(tileLoader,true);

// Configure this threaded tile loader :

// set the minimum java thread priority for loading tiles
threadedTileLoader.setThreadPriority(Thread.MIN_PRIORITY);

// set to repaint the view after each tile is loaded
threadedTileLoader.setRepaintPolicy(IlvThreadedTileLoader.REPAINT_AFTER_EACH_TI
LE);

// Set this threaded tile loader on the IlvTiledLayer
tiledLayer.setTileLoader(threadedTileLoader);