Submit Search
デザパタIntro
0 likes
860 views
Yuto Suzuki
Java言語によるデザインパターン【マルチスレッド編】のイントロダクションです。
Technology
Read more
1 of 18
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
More Related Content
PDF
Database qpstudy-okuno
Mikiya Okuno
ODP
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
Mikiya Okuno
PDF
MySQLトラブル解析入門
Mikiya Okuno
PDF
Art of MySQL Replication.
Mikiya Okuno
PDF
MySQL Workbench 6.1 の紹介
yoyamasaki
PDF
MySQL Workbench をモデリングツールとして使ってみた
Norio Nakamura
PDF
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
Mikiya Okuno
PDF
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
Mikiya Okuno
Database qpstudy-okuno
Mikiya Okuno
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
Mikiya Okuno
MySQLトラブル解析入門
Mikiya Okuno
Art of MySQL Replication.
Mikiya Okuno
MySQL Workbench 6.1 の紹介
yoyamasaki
MySQL Workbench をモデリングツールとして使ってみた
Norio Nakamura
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
Mikiya Okuno
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
Mikiya Okuno
More from Yuto Suzuki
(20)
PPTX
5xx解消への道のり
Yuto Suzuki
PPTX
MySQLのインデックス入門
Yuto Suzuki
PPTX
Ad vol.2
Yuto Suzuki
PPTX
広告勉強会
Yuto Suzuki
PPTX
Mastering Bitcoin ~network~
Yuto Suzuki
PPTX
Aerospike基本のき
Yuto Suzuki
PPTX
いまさらAkkaStream
Yuto Suzuki
PPTX
Introduction of View Through Tracking
Yuto Suzuki
PPTX
エンジニアのためのマーケティング
Yuto Suzuki
PPTX
How to Build a Team
Yuto Suzuki
PPTX
プロダクトにおけるScala
Yuto Suzuki
PPTX
Do you like scala
Yuto Suzuki
PPTX
Re invent
Yuto Suzuki
PPTX
Slackから始めるChatOps
Yuto Suzuki
PPTX
大学の時の研究の話
Yuto Suzuki
PPTX
F.O.Xを支える技術
Yuto Suzuki
PPTX
Scala戦士を増やせ
Yuto Suzuki
PPTX
Recommend scala
Yuto Suzuki
PDF
スクラムに学ぶ開発の回し方
Yuto Suzuki
PDF
Breezeで始めるデータ分析
Yuto Suzuki
5xx解消への道のり
Yuto Suzuki
MySQLのインデックス入門
Yuto Suzuki
Ad vol.2
Yuto Suzuki
広告勉強会
Yuto Suzuki
Mastering Bitcoin ~network~
Yuto Suzuki
Aerospike基本のき
Yuto Suzuki
いまさらAkkaStream
Yuto Suzuki
Introduction of View Through Tracking
Yuto Suzuki
エンジニアのためのマーケティング
Yuto Suzuki
How to Build a Team
Yuto Suzuki
プロダクトにおけるScala
Yuto Suzuki
Do you like scala
Yuto Suzuki
Re invent
Yuto Suzuki
Slackから始めるChatOps
Yuto Suzuki
大学の時の研究の話
Yuto Suzuki
F.O.Xを支える技術
Yuto Suzuki
Scala戦士を増やせ
Yuto Suzuki
Recommend scala
Yuto Suzuki
スクラムに学ぶ開発の回し方
Yuto Suzuki
Breezeで始めるデータ分析
Yuto Suzuki
Ad
デザパタIntro
1.
Javaで学ぶデザパタ入門 マルチスレッド編 スキルウェンズデー輪読 鈴木雄登
2.
アジェンダ • スレッドとは • スレッドの起動 •
スレッドの一時停止 • スレッドの排他制御 • スレッドの協調 • マルチスレッドの評価
3.
スレッド • スレッド:複数の処理を同時に実行する場合の、処理の 分割の単位として、スレッドとプロセスがある • スレッドには2種類ある •
シングルスレッド • マルチスレッド
4.
シングルスレッド public class Main
{ public static void main (String[] args) { for (int i = 0; i < 10000; i++ ) { System.out.print(“Good” + i + “!”); } } } メインスレッド Good0!Good1!Good2! … Good9999! このようにシーケンシャルに表示される
5.
マルチスレッド • 複数の処理を同時並行する処理に適している • 例 •
GUIのアプリケーション • 時間がかかるIO処理 • 複数のクライアントとの処理
6.
Javaでのスレッド • runとstart • run •
新しく起動されるスレッドでの動作 • start • メインスレッド上で新しいスレッドを呼び出す
7.
実際の流れ メインスレッド サブスレッド start run サブスレッド run start サブスレッド run start
8.
スレッドの起動 • スレッドの起動については以下の2つの方法がある • Threadのサブクラスを使う •
Runnableインターフェースの実装クラスを使う
9.
ThreadとRunnableの違い THREAD RUNNABLE クラスか否か クラス
インターフェース 継承、実装関係 Runnable 親なし 実装方法 Thread 作って Runnable て、 Thread
10.
public SampleRunnable implements
Runnable { @Override public void run() { … } } ! new Thread(new SampleRunnable).start(); public BaseThread extends Thread { @Override public void run() { … } } ! new BaseThread().start(); Threadのサブクラス Runnableの実装クラス
11.
スレッドの一時停止 • sleep • Threadを止めるメソッド •
これだけ。
12.
スレッドの排他制御 • 排他:自分の仲間以外の者すべてをしりぞけて受け入れな いこと • 排他制御:1つの共有資源にアクセスしている期間に複数の スレッドが同時に入ることを防ぐこと •
なんで排他制御? • 並列で処理→同じものを変更したら壊れる • 同時に変更は一つまでに制御←排他制御
13.
スレッドの排他制御 • syncronizedメソッド • メソッドが対象 •
syncronizedブロック • ブロックが対象
14.
syncronizedブロック class Something { public
void method() { synclonized(this) { hoge(); } } } 制御したいインスタンスを引 数に加える このブロック内は 排他制御される 例)
15.
スレッドの協調 • waitメソッド • 待合室で待つ •
notifyメソッド • 待合室に空いたことを伝える
16.
マルチスレッドの評価 • 安全性(必須) • オブジェクトを壊さないこと:フィールドが予想外の値を取らないか? •
生存性(必須) • 必要な処理が行われること:必要な処理が必ず行われるか? • 再利用性 • クラスを再利用できること:クラスを再利用できるか? • パフォーマンス • 処理を高速・大量にできること
17.
パフォーマンス • スループット:単位時間あたりの処理数 • 応答性:要求を出してから反応が返るまでの時間 •
キャパシティ:同時に処理できる数 • 効率、スケーラビリティ、デグラレーション etc...
18.
問題 public BaseThread extends
Thread { @Override public void run() { Sysout(“test”); } } ! BaseThread t = new Thread(); t.start(); try { t.sleep(1000); } catch (InterruptException e) { } 1秒間スリープさせたいのですが、 以下のプログラムは誤っています。 どこでしょうか?
Download