Java子執行緒和主線程交替輸出(乙個簡單的例項)

2021-08-01 09:27:19 字數 940 閱讀 1431

實現主線程和子執行緒的交替輸出列印,首先建立乙個實現執行緒方法的service

public class service  catch (interruptedexception e) 

} for(int i=0;i<5;i++)

flag = true; //列印完成後,應當切換到main,同時應當喚醒正在等待的主線程

this.notifyall(); //子執行緒再次試圖進入sub時,flag為true,就會進入等待,切換到了main中 }

public synchronized void main() catch (interruptedexception e)

} //主線程被喚醒後,開始列印輸出

for(int i=0;i<5;i++)

flag = false; //然後又切換到sub,並喚醒等待的子執行緒

this.notifyall();

}}

sub方法是子執行緒呼叫的,main方法是主線程呼叫

public static void main(string args) throws interruptedexception 

} };

thread thread = new thread(r);

thread.start();

for(int i=0;i<5;i++)

}

這樣,子執行緒啟動後,會和主線程同時競爭service的鎖,因為flag初始值是false,則即使主線程先獲取的鎖,也會進入等待,釋放鎖,所以,首先會列印子執行緒的輸出,子執行緒列印完成後,flag變為true,並且喚醒的其他的執行緒(因為一共就兩個執行緒,所以,另乙個等待的執行緒就是主線程)。然後又回到了原始的狀態,只是這次flag是true,因此,主線程會獲取到鎖,並列印輸出,這樣依次會交替5次。

主線程和子執行緒

子執行緒通過 handlerthread的thread.getlooper 繫結,在主線程的handler的handlermessage中呼叫threadhandler.sendmessagedelay msg,1000 向子執行緒傳送訊息。在子執行緒中通過handler.sendmessagede...

主線程和子執行緒

主線程負責管理由它建立的子執行緒,建立 啟動 掛起 停止等。主線程通過發訊息的方式管理子執行緒,例如,給子執行緒傳送start 訊息,子執行緒啟動,子執行緒執行入口的run 方法。thread有下面兩個構造方法 thread runnable target,string name thread ru...

主線程和子執行緒總結

執行結果 從上面可以看到 如果主線程和子執行緒是並行的,雖然都是用while 1 但是倚靠 cpu的排程,主線程和子執行緒都有機會得到執行。如果要在子執行緒裡面改變主線程裡面的資料,就在 pthread create 裡面的最後 乙個引數使用傳位址呼叫 void c,否則使用傳值呼叫 void c ...