多執行緒列印A12Z34。。。

2021-09-09 08:41:09 字數 1244 閱讀 5976

1、**最簡潔的、沒有處理異常、拋異常、使用synchronized函式。

一共2個類,

乙個類實現runnable介面,封裝列印數字及字母的方法。

另乙個類為測試類,測試類用匿名內部類重寫run方法,迴圈列印數字及字母。

2、處理異常、基本結構與第乙個一樣,在列印數字和字母的方法內部的時候略有不同。這裡面有三個題目,基本類似。

3、處理異常、synchronized塊,共享obj鎖。

一共3個類,

乙個測試類,定義共享物件obj,將執行緒任務物件作為引數傳遞給thread,呼叫執行緒物件的start方法。

乙個數字類,實現runnable介面,構造方法傳obj共享物件,重寫run方法列印數字。

乙個字母類,實現runnable介面,構造方法傳obj共享物件,重寫run方法列印字母。

4、處理異常、synchronized塊,共享obj鎖。使用tread類

一共3個類,結構基本與第三個一樣。

5、處理異常、lock鎖、執行緒池、內部類。

一共乙個類。

在這乙個類中,有乙個主方法,主方法定義了執行緒池物件,呼叫execute方法執行。

此類中還有兩個內部類,

乙個為runnablea,實現runnable介面,用來列印數字。

另乙個為runnableb,實現runnable介面,用來列印字母。

執行緒池及其方法execute()具體參考帖子:

execute的引數要傳入乙個runnable介面或其子類型別的引數。

複習內部類知識:

在類內的成員位置上定義非靜態的內部類。

在外部類的靜態方法當中訪問:

(1)建立外部類物件。 outer outer= new outer();

(2)建立內部類物件。建立內部類物件的時候需要使用外部類進行引導。 outer.inner inner = outer.new inner();

(3)通過內部類的物件呼叫內部類的方法:

因此,帖子中的主方法中 test.new runnablea()就可以理解了。

public static void main(string args)

6、最後這個帖子有5個版本,有跟我不一樣的幾個版本。

可以看下最後乙個,是用lock和condition來實現加鎖解鎖和等待喚醒。

執行緒是用runnable介面實現,而且不是用的普通建立匿名類的方法,而是用的lambda表示式,因為runnable也是個函式式介面。用執行緒池newcachedthreadpool來排程執行緒。

多執行緒迴圈列印

public class multithread implements runnable public static void main string args 實現run方法,將自定義執行緒的任務定義在run方法上 public void run 輸出結果 執行緒一列印a 執行緒二列印b 執行緒三...

多執行緒列印問題

最近面試遇到乙個多執行緒的題目,對方要求用多個執行緒列印abcabc 每個執行緒負責列印其中乙個字母。迴圈10次吧!public class test thread threads newthread 3 for int i 0 i threads.length i 列印執行緒 class prin...

多執行緒列印寶典

典中典多執行緒列印題,我來歸納一下 三個執行緒分別列印 a,b,c,要求這三個執行緒一起執行,列印 n 次,輸出形如 abcabcabc.的字串 這一招也是我最喜歡的,簡單無腦 public class main public static void main string args catch i...