クラスは多重継承は、つまり、クラスがクラスは、クラスを継承している場合にのみ、クラスを継承することができますマルチスレッド化を達成することができないではないので、スレッドを作成するための方法Runableインターフェースでは、継承Threadクラスを超える大きな利点を持っています、それは、マルチスレッド方法Runableインタフェースを介して達成することができます。
図1に示すように、マルチスレッドのRunnable
パッケージpers.zhb.runnable。 パブリック クラスMyThreadはRunnableを実装して、{ 公共 のボイドの実行(){ のために(int型私= 0 ;私は< 20 ; iの++ ){ システム。アウト .println(にThread.currentThread()のgetName()+。" :!正在执行" + I)。 } } }
pers.zhb.runnableパッケージ; パブリック クラスRunnableDemo { 公共 静的 ボイドメイン(文字列[]引数){ MyThread MT = 新しい新しいMyThread(); T2スレッド = 新しい新しい//また、本質的にスレッドクラスが実行可能インターフェースを実装し、スレッド(MT)をしかし、この方法は、空のランで 、t2.start() のために(int型私は= 0 ;私は< 20であり、Iは++ ){ システム。OUT .printlnは(" 主機能スレッド!" + I); } システム。OUT .printlnを(「主な機能の実行が終わりました。」); } }
2、join()メソッドを使用して
メインスレッドは、子スレッドの実行が終了した後に実行を開始します。
パッケージpers.zhb.runnable。 パブリック クラスMyThreadはRunnableを実装して、{ 公共 のボイドの実行(){ のために(int型私= 0 ;私は< 20 ; iの++ ){ システム。アウト .println(にThread.currentThread()のgetName()+。" :!正在执行" + I)。 } } }
パッケージpers.zhb.runnable。 パブリック クラスRunnableDemo { 公共 静的 ボイドメイン(文字列[]引数)が例外:InterruptedExceptionをスロー{ MyThreadのMT = 新しいMyThread()。 スレッドT1 = 新しいスレッド(MT); t1.start(); t1.join(); 以下のために(int型 i = 0 ; iが< 20 ; iは++ ){ システム。アウト .println(" 主函数线程!" + I)。 } システム。アウト .println(「主な機能は、エンド行わ」); } }