//------------------------------------------------------------------------ ■マルチスレッド(同時複数処理の実行)の基本形 //------------------------------------------------------------------------ //@Threadクラスを継承 class ShowName extends Thread { //Arunメソッドをオーバーライド public void run( ) { for (int i = 1; i <= 5; i++) { System.out.println("名前:Java太郎"); try { sleep(1000); } catch (InterruptedException e) { } } } } //AThreadクラスを継承 class ShowFurigana extends Thread { //Arunメソッドをオーバーライド public void run( ) { for (int i = 1; i <= 5; i++) { System.out.println("フリガナ:ジャバタロウ"); try { sleep(1000); } catch (InterruptedException e) { } } } } public class ExThread1 { public static void main(String[ ] args) { //Dthread1オブジェクトの生成 ShowName thread1 = new ShowName( ); //Ethread2オブジェクトの生成 ShowFurigana thread2 = new ShowFurigana( ); thread1.start( ); //Fスレッドを実行可能状態にする thread2.start( ); //Gスレッドを実行可能状態にする } } //@Runnableインタフェースを実装 class ShowName implements Runnable { //Arunメソッドの本体を定義 public void run( ) { for (int i = 1; i <= 5; i++) { System.out.println("名前:Java太郎"); try { Thread.sleep(1000); } catch (InterruptedException e) { } } } } //------------------------------------------------------------------------ ■マルチスレッド(同時複数処理の実行)の基本形2 //------------------------------------------------------------------------ //BRunnableインタフェースを実装 class ShowFurigana implements Runnable { //Crunメソッドの本体を定義 public void run( ) { for (int i = 1; i <= 5; i++) { System.out.println("ふりがな:javaたろう"); try { Thread.sleep(1000); } catch (InterruptedException e) { } } } } public class ExThread2 { public static void main(String[ ] args) { //DShowNameクラスのオブジェクトを生成 ShowName sn = new ShowName( ); //EshowFuriganaクラスのオブジェクトを生成 ShowFurigana sf = new ShowFurigana( ); //FThreadクラスのオブジェクトを生成 Thread thread1 = new Thread(sn); //GThreadクラスのオブジェクトを生成 Thread thread2 = new Thread(sf); thread1.start( ); //Hスレッドを実行可能状態にする thread2.start( ); //Iスレッドを実行可能状態にする } } //------------------------------------------------------------------------ ■アプレット上でのマルチスレッド(同時複数処理の実行)の利用例 //------------------------------------------------------------------------ import java.awt.Graphics; import java.applet.Applet; import java.util.Date; /* */ public class ClockApplet extends Applet implements Runnable { Thread thread = null; // paintメソッドをオーバーライド public void paint(Graphics g) { // 現在の時刻を座標(20,20)の位置に描画 Date now = new Date(); g.drawString(now.toString() , 20, 20); } // startメソッドをオーバーライド public void start() { if (thread==null) { // スレッド(アプレット表示とは別の処理)を生成 thread = new Thread(this); // スレッドを開始 thread.start(); } } // stopメソッドをオーバーライド public void stop() { // スレッド終了 thread = null; } // スレッドの処理 public void run() { while (thread!=null) { // 再描画します repaint(); try { // スレッドを1000ミリ秒停止します thread.sleep(1000); } catch (InterruptedException e) { } } } } //------------------------------------------------------------------------ ■iアプリ上でのマルチスレッドの利用例 (Canvasクラスを使用) //------------------------------------------------------------------------ //※基本形は下記の通りです。 public class ThreadSample extends IApplication{ public void start() { ThreadCanvas threadCanvas = new ThreadCanvas(); Display.setCurrent(threadCanvas); } } class ThreadCanvas extends Canvas implements Runnable { public ThreadCanvas(){ //.... Thread thread = new Thread(this); thread.start(); } public void run(){ while(true){ try{ thread.sleep(100);//0.1秒間隔空ける }catch (InterruptedException e){ break; } repaint(); } } public void paint(Graphics g){ //....描画記述 } }//end ------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------