在此之前實現了兩個執行緒的交替執行,那麼也該來研究一下如何控制線程的執行順序。
此筆記只有部分實現。
1,使用join();
簡單易操作,此方法有個缺陷就是 呼叫程式寫起來有點冗長,如果有n個執行緒,那麼main();就會非常長,而且有些許重複**。
/*** @program:
* @description:
* * 控制線程的執行順序
* 1,其餘方法見執行緒交替執行筆記
* 2,join();
* 3,使用了責任鏈設計模式,可以實現n個執行緒的順序控制
* 4,執行緒池 */
public
class
threadorder_1
catch
(interruptedexception e)
}}/**
* 第乙個執行的執行緒 */
class first_1 implements
runnable
}/**
* 第二個執行的執行緒 */
class second_1 implements
runnable
}
基於以上的缺陷(其實缺陷都是瞎謅的,哈哈哈),可以使用責任鏈模式,增加乙個執行緒順序控制類
該方式在呼叫時控制好執行順序,最後只要呼叫一次執行方法即可。【個人覺得有點遞的思想...】
以下實現了3個執行緒的順序控制。
publicclass
threadorder_1 }.
../*** 執行緒順序控制類
* * 責任鏈模式 */
class
threadorder
public
threadorder(runnable first)
public
void
setnextorder(threadorder nextorder)
//具體邏輯實現
public
void
run()
} catch
(interruptedexception e)
}}
2,執行緒池。
控制線程執行順序,可以使用單執行緒singlethreadpool;或者fixedthreadpool(1);
注意關閉執行緒池,否則程式不結束。
publicclass
threadorder_1 }.
..
如何控制線程執行的順序?
public class myservice for int i 0 i 2 i ordernum 2 notifyall catch interruptedexception e public synchronized void methodb for int i 0 i 2 i ordernum...
如何控制線程執行的順序?
1 如何控制線程執行的順序?有三個執行緒,讓這三個執行緒按照我們指定的順序執行!答 1.join 方法 讓主線程等待其他執行緒執行完成之後執行。讓主線程放棄cpu的控制權,等待呼叫join方法的執行緒執行完成之後再執行!join 方法底層呼叫的wait 方法,是讓主線程等待其他執行緒執行完成之後執行...
多執行緒02 如何控制線程執行順序
這裡使用join 方法 api中那句 等待該執行緒終止 主語是join方法被呼叫時所處的執行緒,該執行緒 是指呼叫join方法的執行緒。比如現在有a b兩個執行緒物件,在a執行緒 現b.join 那麼a執行緒將會被阻塞 或者說掛起 直到b執行緒執行完畢才會繼續執行b.join 語句下面的 即繼續執行...