2013.9.30
マルチスレッド管理について、いろいろ学んでいました。
少しまとめておきます。
1、有名なテキストをご紹介します。
java スレッドプログラミングというタイトルになっています。
http://www.amazon.co.jp/exec/obidos/ASIN/4881359185/ref=sr_aps_b_6/249-8921390-5557163
そもそも、 スレッドプログラミングは並列処理分野の技術の中の一つです。
2はスレッドは一体なんでしょうか。OS基礎と同じように考え方で、複数のプロセスが同時に走るように見えることは重要です。
横取り(プリエンプション)(プロセスの実行中に、突然割り込まれて実行が停止すること)
アトミックな操作(横取りが起きないことが保証されている操作)
3extends Thread 跟 interface Runnable[戻り値がない](Callable「戻り値がある」)方法。
書き方は省略する
賢い方法、スレッドを待機させ、必要に応じてスレッドを取り出してタスクを割り当てる方法があります。
「スレッドプール」です。
newFixThreadPool
newCachedThreadPool
newScheduledThreadPool
newSingleThreadExecutor
4同期 synchronized(ブロックをかけると同じ感じ)
synchronized文とsynchronizedメソッドの違い
文のほうは
public static void increment(){
// synchronized (this)
synchronized (MyClass.class)
count++;
}
}
コレクション同期処理
List<String> slist=Collections.synchronized(list);
内部処理するので、外部処理は不要です。
5 volatile 修飾子をつけたら、フィールド変数の値の変更は本物の値に書き戻されることが保証される。また、volatile 修飾子のフィールド値の読み込みは本物の値を読むことを保証する。
Lockクラスの使用方
Lock lock;
lock.lock();
lock.unlock;
6 通知機能
wait();
*notify(\(\()
*notifyAll();
join();
sleep();(try catch)
7 デッドロックの予防
2つのスレッドがお互いにロックうを待ち合う現象を「デッドロック」と呼ぶ。
参考パーフェクト java
382ページ
Mac osのshell Scriptを用いて、jarfileを実行する
まず、mac下で謎のjavaのPATH
http://d.hatena.ne.jp/aoe-tk/20120603/1338738083
このブロクを参考してください。
PATH=/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/
ここに設定されている
次、vi shell01.sh
Shell Script プログラミング書く習慣とは
1どんなshellを使っています
2プログラムの内容と提供する機能の概要
3バージョン情報
4作者と連絡先
5歴史記録と修正時間の更新
#!/bin/bash
# Program:
# This program run jar file on your computer.
# History:
# 2013/09/25 Sun First release
#実行行列
java -version
java -jar ~/Desktop/test.jar
最後に、 [Esc]
[ :wq]
sh shell01.shで実行する。
エージェント
相互作用性(Interaction)
協調性(Coordination)
知性(Intelligence)
適応性(Adaptability)
代行性(Agency)
自律性(Autonomy)