2015年11月2日 星期一

[Multithread] Java multithread

Java multithread - 1


在開發多執行緒程式時,常發生的問題是共用資源非同步問題,就像工作一個人做好好的,多一個人沒有協調好就是來添亂的,除了叫他麥來亂之外,可能好好協調才是增加產能的好策略。

本系列文主要把之前遇過的一些多執行緒問題紀錄一下,然後一些資料參考這本書和部分本人的記憶,如果有疏漏或是錯誤也請不吝指教。

問題


  • 共用物件
  • 多資源資源鎖定
  • Job - Worker
  • 排程

Java - Syncronized


  • syncronized method
  • syncronized block

Java - Thread


  • wait
  • sleep
  • join
  • yank
  • notify/notifyAll
  • interrupt
  • Thread/Runnable
  • Mutax Object

Queue Design


Worker Design


Job

[maven] profile - activation

http://maven.apache.org/guides/introduction/introduction-to-profiles.html

profile 設定裡面除了 id, build 之外還有個蠻有用的設定

activation 可以用來設定啟用這個 profile 的條件 (哇喔~~~)

指定 JDK 1.4
  1. <activation>
  2. <jdk>1.4</jdk>
  3. </activation>

JDK 1.3~1.6前
  1. <activation>
  2. <jdk>[1.3,1.6)</jdk>
  3. </activation>

特定 OS
  1. <activation>
  2. <os>
  3. <name>Windows XP</name>
  4. <family>Windows</family>
  5. <arch>x86</arch>
  6. <version>5.1.2600</version>
  7. </os>
  8. </activation>

有 debug 這個 property
  1. <activation>
  2. <property>
  3. <name>debug</name>
  4. </property>
  5. </activation>

environment 設定成 test -Denvironment=test
  1. <activation>
  2. <property>
  3. <name>environment</name>
  4. <value>test</value>
  5. </property>
  6. </activation>

沒有某個檔案或資料夾
  1. <activation>
  2. <file>
  3. <missing>target/generated-sources/axistools/wsdl2java/org/apache/maven</missing>
  4. </file>
  5. </activation>

預設啟動
  1. <activation>
  2. <activeByDefault>true</activeByDefault>
  3. </activation>