マルチスレッドの基本 - kobe...
TRANSCRIPT
![Page 1: マルチスレッドの基本 - Kobe Universityi.cla.kobe-u.ac.jp/murao/class/2011-SeminarB3B/2/2.pdfマルチスレッド実現の2つの方法 1.Threadクラスを継承 2.Runnableインターフェイスを実装](https://reader033.vdocuments.us/reader033/viewer/2022043021/5f3cad3fa0a5365fa32e7ee0/html5/thumbnails/1.jpg)
マルチスレッドの基本
11年12月8日木曜日
![Page 2: マルチスレッドの基本 - Kobe Universityi.cla.kobe-u.ac.jp/murao/class/2011-SeminarB3B/2/2.pdfマルチスレッド実現の2つの方法 1.Threadクラスを継承 2.Runnableインターフェイスを実装](https://reader033.vdocuments.us/reader033/viewer/2022043021/5f3cad3fa0a5365fa32e7ee0/html5/thumbnails/2.jpg)
スレッド
• プログラムを実行する道筋
• 通常はスレッドは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インターフェイスを実装](https://reader033.vdocuments.us/reader033/viewer/2022043021/5f3cad3fa0a5365fa32e7ee0/html5/thumbnails/3.jpg)
新規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インターフェイスを実装](https://reader033.vdocuments.us/reader033/viewer/2022043021/5f3cad3fa0a5365fa32e7ee0/html5/thumbnails/4.jpg)
マルチスレッド実現の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インターフェイスを実装](https://reader033.vdocuments.us/reader033/viewer/2022043021/5f3cad3fa0a5365fa32e7ee0/html5/thumbnails/5.jpg)
方法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インターフェイスを実装](https://reader033.vdocuments.us/reader033/viewer/2022043021/5f3cad3fa0a5365fa32e7ee0/html5/thumbnails/6.jpg)
方法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インターフェイスを実装](https://reader033.vdocuments.us/reader033/viewer/2022043021/5f3cad3fa0a5365fa32e7ee0/html5/thumbnails/7.jpg)
新規クラスの追加
右クリックメニュー → 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インターフェイスを実装](https://reader033.vdocuments.us/reader033/viewer/2022043021/5f3cad3fa0a5365fa32e7ee0/html5/thumbnails/8.jpg)
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インターフェイスを実装](https://reader033.vdocuments.us/reader033/viewer/2022043021/5f3cad3fa0a5365fa32e7ee0/html5/thumbnails/9.jpg)
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インターフェイスを実装](https://reader033.vdocuments.us/reader033/viewer/2022043021/5f3cad3fa0a5365fa32e7ee0/html5/thumbnails/10.jpg)
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インターフェイスを実装](https://reader033.vdocuments.us/reader033/viewer/2022043021/5f3cad3fa0a5365fa32e7ee0/html5/thumbnails/11.jpg)
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インターフェイスを実装](https://reader033.vdocuments.us/reader033/viewer/2022043021/5f3cad3fa0a5365fa32e7ee0/html5/thumbnails/12.jpg)
方法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インターフェイスを実装](https://reader033.vdocuments.us/reader033/viewer/2022043021/5f3cad3fa0a5365fa32e7ee0/html5/thumbnails/13.jpg)
方法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インターフェイスを実装](https://reader033.vdocuments.us/reader033/viewer/2022043021/5f3cad3fa0a5365fa32e7ee0/html5/thumbnails/14.jpg)
新規クラスの追加
右クリックメニュー → 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インターフェイスを実装](https://reader033.vdocuments.us/reader033/viewer/2022043021/5f3cad3fa0a5365fa32e7ee0/html5/thumbnails/15.jpg)
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インターフェイスを実装](https://reader033.vdocuments.us/reader033/viewer/2022043021/5f3cad3fa0a5365fa32e7ee0/html5/thumbnails/16.jpg)
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インターフェイスを実装](https://reader033.vdocuments.us/reader033/viewer/2022043021/5f3cad3fa0a5365fa32e7ee0/html5/thumbnails/17.jpg)
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インターフェイスを実装](https://reader033.vdocuments.us/reader033/viewer/2022043021/5f3cad3fa0a5365fa32e7ee0/html5/thumbnails/18.jpg)
KeyTimerAppクラス
Runnableを実装したインスタンスを生成
Threadインスタンスを生成別スレッドのスタート
別スレッドの終了待ち
11年12月8日木曜日