JAVA通幽(四)多執行緒

2021-08-29 10:16:52 字數 2373 閱讀 8294

接下來我們進入到多執行緒的學習,向著勝利穩步邁進

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建立的執行緒預設情況下是前台執行緒,在程序中,只要有乙個前台執行緒未退出,程序就不會終止。主線程就是乙個前台執行緒。而後台執行緒不管執行緒是否結束,只要所有的前台執行緒都退出 包括正常退出和異常退出 後,程序就會自動終止。一般後台執行緒用於處理時間較短的任務,...