class Count A extends Thread private String name

  • Slides: 23
Download presentation

スレッドの起動 その① 例1. class Count. A extends Thread{ private String name; public Count. A(String

スレッドの起動 その① 例1. class Count. A extends Thread{ private String name; public Count. A(String nm){ name=nm; } public void run() { for (int i=0; i<5; i++){ System. out. println(name+"run="+i); } } }

スレッドの起動 その① class Samp 1{ public static void main (String[] args){ Count. A ct

スレッドの起動 その① class Samp 1{ public static void main (String[] args){ Count. A ct 1 = new Count. A("1番目"); ct 1. start(); for(int i=0; i<5; i++){ System. out. println("main="+i); } } }

スレッドの起動 その① 実行結果 1回目 main=0 main=1 main=2 main=3 1番目 run=0 1番目 run=1 1番目 run=2

スレッドの起動 その① 実行結果 1回目 main=0 main=1 main=2 main=3 1番目 run=0 1番目 run=1 1番目 run=2 1番目 run=3 1番目 run=4 main=4

スレッドの起動 その① 2回目 main=0 main=1 1番目 run=0 1番目 run=1 1番目 run=2 1番目 run=3 1番目

スレッドの起動 その① 2回目 main=0 main=1 1番目 run=0 1番目 run=1 1番目 run=2 1番目 run=3 1番目 run=4 main=2 main=3 main=4

複数スレッドの起動 class Count. A extends Thread{ ・・・ } class Samp 2{ public static void

複数スレッドの起動 class Count. A extends Thread{ ・・・ } class Samp 2{ public static void main (String[] args){ Count. A ct 1 = new Count. A("1番目"); ct 1. start(); Count. A ct 2 = new Count. A("2番目"); ct 2. start(); for(int i=0; i<5; i++){ System. out. println("main="+i); } } }

複数スレッドの起動 実行結果(1回目) main=0 main=1 main=2 main=3 1番目run=0 2番目run=0 1番目run=1 2番目run=1 1番目run=2 2番目run=2 1番目run=3 2番目run=3

複数スレッドの起動 実行結果(1回目) main=0 main=1 main=2 main=3 1番目run=0 2番目run=0 1番目run=1 2番目run=1 1番目run=2 2番目run=2 1番目run=3 2番目run=3 1番目run=4 2番目run=4 main=4

複数スレッドの起動 実行結果(2回目) main=0 1番目run=0 2番目run=0 1番目run=1 2番目run=1 1番目run=2 2番目run=2 1番目run=3 2番目run=3 1番目run=4 2番目run=4 main=1

複数スレッドの起動 実行結果(2回目) main=0 1番目run=0 2番目run=0 1番目run=1 2番目run=1 1番目run=2 2番目run=2 1番目run=3 2番目run=3 1番目run=4 2番目run=4 main=1 main=2 main=3 main=4

スレッドの一時停止 3.スレッドの一時停止 sleep()メソッドの活用 例 class Count. A extends Thread{ private String name; public Count.

スレッドの一時停止 3.スレッドの一時停止 sleep()メソッドの活用 例 class Count. A extends Thread{ private String name; public Count. A(String nm){ name=nm; } public void run() { for (int i=0; i<5; i++){ try{ sleep(1000); System. out. println(name+"run="+i); } catch(Interrupted. Exception e){ } } }

スレッドの一時停止 class Samp 3{ public static void main (String[] args){ Count. A ct 1

スレッドの一時停止 class Samp 3{ public static void main (String[] args){ Count. A ct 1 = new Count. A("1番目"); ct 1. start(); for(int i=0; i<5; i++){ System. out. println("main="+i); } } }

スレッドの終了を待つ 4. スレッドの終了を待つ join()メソッドの活用 class Count. A extends Thread{ private String name; public Count.

スレッドの終了を待つ 4. スレッドの終了を待つ join()メソッドの活用 class Count. A extends Thread{ private String name; public Count. A(String nm){ name=nm; } public void run() { for (int i=0; i<5; i++){ System. out. println(name+"run="+i); } } }

スレッドの終了を待つ class Samp 4{ public static void main (String[] args){ Count. A ct 1

スレッドの終了を待つ class Samp 4{ public static void main (String[] args){ Count. A ct 1 = new Count. A("1番目"); ct 1. start(); try{ このスレッドの終了まで ct 1. join(); 処理を中断して待機します。 } catch(Interrupted. Exception e){ } System. out. println(“main終了します。"); } }

スレッドの起動 その② 例2. class Count. B implements Runnable{ private String name; public Count. B(String

スレッドの起動 その② 例2. class Count. B implements Runnable{ private String name; public Count. B(String nm){ name=nm; } public void run() { for(int i=0; i<5; i++){ System. out. println(name +"run="+i); } } }

スレッドの起動 その② class Samp 5{ public static void main (String[] args){ Count. B ct

スレッドの起動 その② class Samp 5{ public static void main (String[] args){ Count. B ct = new Count. B("2番目"); Thread th = new Thread(ct); th. start(); for(int i=0; i<5; i++){ System. out. println("main="+i); } } }

スレッドの起動 その② 実行結果(1回目) main=0 main=1 main=2 main=3 main=4 2番目run=0 2番目run=1 2番目run=2 2番目run=3 2番目run=4

スレッドの起動 その② 実行結果(1回目) main=0 main=1 main=2 main=3 main=4 2番目run=0 2番目run=1 2番目run=2 2番目run=3 2番目run=4

スレッドの起動 その② 2回目 main=0 main=1 2番目run=0 2番目run=1 2番目run=2 2番目run=3 2番目run=4 main=2 main=3 main=4

スレッドの起動 その② 2回目 main=0 main=1 2番目run=0 2番目run=1 2番目run=2 2番目run=3 2番目run=4 main=2 main=3 main=4