アルゴリズムとデータ構 造演習(7月15日) マルチスレッド 2015/10/1 1 スレッドのライフサイクル 誕生 start 準備完了 notify 持ち時間終了 notifyAll yield 実行中 wait I/O要求 sleep 待機 sleep時間終了 2015/10/1 I/O完了 ディスパッチ 休眠 実行終了 死亡 中断 2 スレッド作成 (1) Threadクラスの拡張 class ThreadX extends Thread { public void run() { // スレッドの処理 } } 2015/10/1 3 スレッド作成 (2) Runnableインタフェースのの宣言 class RunnableY implements Runnable { public void run() { // スレッドの処理 } } 2015/10/1 4 スレッドの起動 (1) スレッドクラスの起動 Thread tx = new ThreadX(); tx.start(); スレッドクラスの起動 RunnableY ry = new RunnableY(); ThreadY ty = Thread(ry); tx.start(); 2015/10/1 5 スレッドの起動 (2) Threadコンストラクタ Thread () Thread (Runnable r) Thread (Runnable r, String s) Thread (String s) 2015/10/1 6 同期 (1) 時間 スレッドA スレッドB t0 t1 $0 残高照会 t2 $0 処理対象切り替え t4 $10預け入れ 処理対象切り替え t5 2015/10/1 $0 残高照会 t3 t6 残高 $10預け入れ $0 $10 $10 $10 7 同期 (2) 生産者/消費者問題 生産者 消費者 共有変数 2015/10/1 8 同期 (3) private int sharedInt = -1; private boolean writeable = true; public synchronized void setSharedInt(int value) { while (!writeable) { wait(); } sharedInt = value; writeable = false; notify(); } 2015/10/1 9 ランダムキャラクターデモ 2015/10/1 アプレットなので、Runnableインタフェース を使用 10
© Copyright 2024 ExpyDoc