接下來我們進入到多執行緒的學習,向著勝利穩步邁進
1.多執行緒的概念
2.多執行緒實現的方式
package com.jwang.test;
public class test extends thread
} public static void main(string args)
}}
package com.jwang.test;
public class test implements runnable
} public static void main(string args)
}}
這樣的話,就可以做到一邊玩遊戲,一邊學習了,雖然說有點荒唐,哈哈哈。
聽多執行緒的概念總是有些枯燥,那麼我們模擬兩個例子玩玩,搶票以及龜兔賽跑
搶票:許多票販子和急著回家的你一起搶票
package com.jwang.test;
public class grab implements runnable catch (interruptedexception e)
}synchronized (this)else
}} }
public static void main(string args)
}
下面來看以下結果吧,也就是慢了那麼一丟丟,?,擷取執行結果一部分,所以我們每次春運回家難啊,博主也是如此,,,
龜兔賽跑:兔子和龜的故事
package com.jwang.test;
public class sport implements runnable catch (interruptedexception e)
}system.out.println(thread.currentthread().getname()+"跑了"+step+"步");
boolean flag = isgameover(step);
if(flag)
} }public boolean isgameover(int step)else
} return false;
} public static void main(string args)
}
我們知道,龜兔賽跑的結果是烏龜贏,所以執行結果其一是:
3.靜態**設計模式
我們先舉乙個例子,乙個公司有乙個領導,他身邊有個秘書。領導相當於真實的物件,秘書相當於領導的乙個**。
作用:為其他物件提供一種**以控制對這個物件的訪問。
設計領導類:leader、秘書類:secretary以及公共的介面會議:meeting,會議介面有抽象方法開會:holdmeeting()
**實現如下:
package com.jwang.test;
//會議介面
inte***ce meeting
//領導類:真實物件
class leader implements meeting
@override
public void holdmeeting() }
//秘書類:**物件
以上**中,秘書a將王總不需要幹的但又不得不做的活做了,極大的提高了王總的開會效率。
大家思考一下,thread類是不是也是靜態**模式的一種實現呢?
4.執行緒的狀態
狀態,即執行緒的生命週期,包含以下部分(箭頭表示可以達到的狀態):
我們可以形象的把他比喻為乙個足球隊。
目前來講,我的專案中還沒有使用多執行緒的概念,我這裡也就淺嘗輒止,有興趣的同學可以多多學習,後續我有時間會繼續深入的去理解
JAVA多執行緒 四
size x large 死鎖 size size medium 1 何為死鎖 size 簡單說來,死鎖就是系統中的執行緒因相互等侍彼此占有的資源而暫停執行,造成系統假死的現象。size medium 2 死鎖是如何發生的 size 假設系統有兩個互斥資源a和b,系統中的兩個執行緒1和2都要獲得a和...
java多執行緒學習 四
本篇介紹synchronized 非this物件x 方式的同步,x一般是引數或者例項變數 package chapter2.synblockstring3 演示不同執行緒持有不同的物件監視器,呼叫是非同步的 ta的物件監視器是anystring,而b的物件監視器是類例項物件 a begin b be...
java多執行緒學習四 後台執行緒
package myk 使用thread建立的執行緒預設情況下是前台執行緒,在程序中,只要有乙個前台執行緒未退出,程序就不會終止。主線程就是乙個前台執行緒。而後台執行緒不管執行緒是否結束,只要所有的前台執行緒都退出 包括正常退出和異常退出 後,程序就會自動終止。一般後台執行緒用於處理時間較短的任務,...