18
マルチスレッドの基本 11128日木曜日

マルチスレッドの基本 - Kobe Universityi.cla.kobe-u.ac.jp/murao/class/2011-SeminarB3B/2/2.pdfマルチスレッド実現の2つの方法 1.Threadクラスを継承 2.Runnableインターフェイスを実装

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: マルチスレッドの基本 - Kobe Universityi.cla.kobe-u.ac.jp/murao/class/2011-SeminarB3B/2/2.pdfマルチスレッド実現の2つの方法 1.Threadクラスを継承 2.Runnableインターフェイスを実装

マルチスレッドの基本

11年12月8日木曜日

Page 2: マルチスレッドの基本 - Kobe Universityi.cla.kobe-u.ac.jp/murao/class/2011-SeminarB3B/2/2.pdfマルチスレッド実現の2つの方法 1.Threadクラスを継承 2.Runnableインターフェイスを実装

スレッド

• プログラムを実行する道筋

• 通常はスレッドは1本(シングルスレッド)

• マルチスレッド=単一のプログラム内で実行箇所が2カ所以上

11年12月8日木曜日

Page 3: マルチスレッドの基本 - Kobe Universityi.cla.kobe-u.ac.jp/murao/class/2011-SeminarB3B/2/2.pdfマルチスレッド実現の2つの方法 1.Threadクラスを継承 2.Runnableインターフェイスを実装

新規Javaプロジェクトの作成

• プロジェクト名:ThreadTest

11年12月8日木曜日

Page 4: マルチスレッドの基本 - Kobe Universityi.cla.kobe-u.ac.jp/murao/class/2011-SeminarB3B/2/2.pdfマルチスレッド実現の2つの方法 1.Threadクラスを継承 2.Runnableインターフェイスを実装

マルチスレッド実現の2つの方法

1.Threadクラスを継承

2.Runnableインターフェイスを実装

11年12月8日木曜日

Page 5: マルチスレッドの基本 - Kobe Universityi.cla.kobe-u.ac.jp/murao/class/2011-SeminarB3B/2/2.pdfマルチスレッド実現の2つの方法 1.Threadクラスを継承 2.Runnableインターフェイスを実装

方法1:Threadクラスを継承

• runメソッドを実装→ 別スレッドで実行されるメソッド (このメソッドを抜けるとスレッドは終了)

• startメソッドを実行→ 別スレッドのスタート(runメソッドが呼ばれる)

• joinメソッドを実行→ スレッドの終了を待つ

11年12月8日木曜日

Page 6: マルチスレッドの基本 - Kobe Universityi.cla.kobe-u.ac.jp/murao/class/2011-SeminarB3B/2/2.pdfマルチスレッド実現の2つの方法 1.Threadクラスを継承 2.Runnableインターフェイスを実装

方法1用のパッケージを作成

• パッケージ名:thread

11年12月8日木曜日

Page 7: マルチスレッドの基本 - Kobe Universityi.cla.kobe-u.ac.jp/murao/class/2011-SeminarB3B/2/2.pdfマルチスレッド実現の2つの方法 1.Threadクラスを継承 2.Runnableインターフェイスを実装

新規クラスの追加

右クリックメニュー → New → Class

11年12月8日木曜日

Page 8: マルチスレッドの基本 - Kobe Universityi.cla.kobe-u.ac.jp/murao/class/2011-SeminarB3B/2/2.pdfマルチスレッド実現の2つの方法 1.Threadクラスを継承 2.Runnableインターフェイスを実装

Threadクラスを継承

クラス名:KeyTimer

java.lang.Threadを継承

11年12月8日木曜日

Page 9: マルチスレッドの基本 - Kobe Universityi.cla.kobe-u.ac.jp/murao/class/2011-SeminarB3B/2/2.pdfマルチスレッド実現の2つの方法 1.Threadクラスを継承 2.Runnableインターフェイスを実装

KeyTimerクラスの実装

• 配布したプリントに従って runメソッド他を実装

11年12月8日木曜日

Page 10: マルチスレッドの基本 - Kobe Universityi.cla.kobe-u.ac.jp/murao/class/2011-SeminarB3B/2/2.pdfマルチスレッド実現の2つの方法 1.Threadクラスを継承 2.Runnableインターフェイスを実装

KeyTimerAppクラスの実装

• mainメソッドを持つクラスとして新規クラスを追加

• 配布したプリントに従って実装

11年12月8日木曜日

Page 11: マルチスレッドの基本 - Kobe Universityi.cla.kobe-u.ac.jp/murao/class/2011-SeminarB3B/2/2.pdfマルチスレッド実現の2つの方法 1.Threadクラスを継承 2.Runnableインターフェイスを実装

KeyTimerAppクラス

別スレッド実行オブジェクトを生成

別スレッドをスタート

別スレッドの終了待ち

11年12月8日木曜日

Page 12: マルチスレッドの基本 - Kobe Universityi.cla.kobe-u.ac.jp/murao/class/2011-SeminarB3B/2/2.pdfマルチスレッド実現の2つの方法 1.Threadクラスを継承 2.Runnableインターフェイスを実装

方法2:Runnableインターフェイスの実装

• runメソッドの実装 → Threadクラスを継承した場合と同じ

• Threadクラスのインスタンスを作成→ Runnableインターフェイスを実装したインスタンスを渡す

• Threadクラスのインスタンスのstartメソッドを実行→ 別スレッドのスタート

• Threadクラスのインスタンスのjoinメソッドを実行→ 別スレッドの終了待ち

11年12月8日木曜日

Page 13: マルチスレッドの基本 - Kobe Universityi.cla.kobe-u.ac.jp/murao/class/2011-SeminarB3B/2/2.pdfマルチスレッド実現の2つの方法 1.Threadクラスを継承 2.Runnableインターフェイスを実装

方法1用のパッケージを作成

• パッケージ名:runnable

11年12月8日木曜日

Page 14: マルチスレッドの基本 - Kobe Universityi.cla.kobe-u.ac.jp/murao/class/2011-SeminarB3B/2/2.pdfマルチスレッド実現の2つの方法 1.Threadクラスを継承 2.Runnableインターフェイスを実装

新規クラスの追加

右クリックメニュー → New → Class

11年12月8日木曜日

Page 15: マルチスレッドの基本 - Kobe Universityi.cla.kobe-u.ac.jp/murao/class/2011-SeminarB3B/2/2.pdfマルチスレッド実現の2つの方法 1.Threadクラスを継承 2.Runnableインターフェイスを実装

Runnableインターフェイスを実装

クラス名:KeyTimer

java.lang.Runnableインターフェイス

11年12月8日木曜日

Page 16: マルチスレッドの基本 - Kobe Universityi.cla.kobe-u.ac.jp/murao/class/2011-SeminarB3B/2/2.pdfマルチスレッド実現の2つの方法 1.Threadクラスを継承 2.Runnableインターフェイスを実装

KeyTimerクラスの実装

• 配布したプリントに従って runメソッド他を実装

11年12月8日木曜日

Page 17: マルチスレッドの基本 - Kobe Universityi.cla.kobe-u.ac.jp/murao/class/2011-SeminarB3B/2/2.pdfマルチスレッド実現の2つの方法 1.Threadクラスを継承 2.Runnableインターフェイスを実装

KeyTimerAppクラスの実装

• mainメソッドを持つクラスとして新規クラスを追加

• 配布したプリントに従って実装

11年12月8日木曜日

Page 18: マルチスレッドの基本 - Kobe Universityi.cla.kobe-u.ac.jp/murao/class/2011-SeminarB3B/2/2.pdfマルチスレッド実現の2つの方法 1.Threadクラスを継承 2.Runnableインターフェイスを実装

KeyTimerAppクラス

Runnableを実装したインスタンスを生成

Threadインスタンスを生成別スレッドのスタート

別スレッドの終了待ち

11年12月8日木曜日